在搜索领域,数据源产生后,就需要建立索引(Index),以便线上检索。索引的建立方式有正排和倒排。记文档为doc,关键字为word。看如下文档A,记文档ID为doc1:
The boy has great potential. His name is Peeta.
一、正排索引
以文档ID为主键key,记录每个词及其出现的次数,检索时需要扫描表中每个文档里的词的信息,直到找到所有包含查询关键字的文档。对上述文档A建立正排索引的表结构如下:
这种方式建立索引,结构简单,建立比较方便且易于维护。当有新的文档加入时,直接为该文档建立一个新的索引块,添加到原来索引的末尾,并分析词、词频、位置信息即可;如果有文档要删除,则找到该文档号对应的索引信息,将其删除。
在搜索的时候基本上都是用关键词进行搜索。当我们搜索关键字“Peeta”,10000个文档中有10个文档包含“Peeta”这个关键字。由于正排索引是以文档ID为key建立索引的,就需要把这10000个文档都扫描一遍,检索到包含“Peeta”的10个文档。得到检索结果后,再进行排序rank,重排reRank等。这种方式检索效率较低,尤其是文档数量规模很大的时候(如现在互联