在搜索引擎中包含很多的文件,每个文件都有对应的ID,文件内容就是系列关键词的集合(每个关键词也有对应ID)。
例如“文档1”经过分词,提取了100个关键词,会记录每个关键词在文档中的出现次数和出现位置。
一、倒排索引
假如给你一个文本库,现在让你去找出所有包含“Hello”这个单词的文档,并按该单词出现的频率高低进行权重,即出现次数最多的文本优先展示。
1.1 正排索引
倒排索引是相对于正排索引来说的,对于上面的场景,先看正排索引会怎么做:
如果是正排索引,结构如下:
可以看到正排索引是以文档为第一层,也就是说如果要搜索包含关键词1的文档,那么所有文档都需要扫描,记录哪些文档包含了关键词1,最后返回结果。
1.2 倒排索引
上面介绍了正派索引,可以看到在根据某个关键词进行搜索时需要扫描所有文档,这个效率就太低了,要是文档少还好,要是海量文档,肯定影响用户体验。
于是就出现了倒排索引来解决上面的问题,倒排索引结构如下: