3.ElasticSearch的倒排索引

一. 正向索引

常规的索引建立方式
文档---> 关键词的映射过程(正向索引)

比如: 我有很多个文章,如果想查询其中几个文章是否含有刘耀这个关键词,那么我就需要打开所以文章,找到里面含义刘耀的文章.这就是正向索引

在搜索引擎中每个文件都对应一个文件ID,文件内容被表示为一系列关键词的集合(实际上在搜索引擎索引库中,关键词也已经转换为关键词ID)。例如“文档1”经过分词,提取了20个关键词,每个关键词都会记录它在文档中的出现次数和出现位置。(来自百度)

得到正向索引的结构如下:

“文档1”的ID > 单词1:出现次数,出现位置列表;单词2:出现次数,出现位置列表;…………。

二、倒排索引

倒排方向建立索引

关键词---> 文档的映射
把正向索引的结果重新构造成倒排索引(反向索引)

如图:

图1:

WordID 单词 倒排文档列表(DocId)
1 刘耀 (1,❤️,11>),(2,<7>),(3,<9>)
2 Python (1,<6>), (2,<1>), (3,<3>), (4,<9>)
3 Java (3,<2>), (5, <6>)
4 go (3, <1,12>), (3,❤️,4>)
5 js (1, <1,16>), (5, <1>)

图2:

WordID 单词 倒排文档列表(DocId),TF
1 刘耀 (1,❤️,11>,2),(2,<7>),(3,<9>,2)
2 Python (1,<6>,10), (2,<1>,2), (3,<3>,22), (4,<9>,12)
3 Java (3,<2>,12), (5, <6>,2)
4 go (3, <1,12>,2), (3,❤️,4>,2)
5 js (1, <1, 16>,2), (5, <1>,2)

把文档和单词进行组合运算
TF代表频率的意思

把每个出现关键词的文档都记录该文档的ID,<>括号里面的是这个关键词出现的位置,最后一位数字是出现的频率。

当我根据关键词查找 例如查找刘耀,就可以直接搜到对应文档的ID

posted @ 2017-10-16 23:18  刘耀  阅读(928)  评论(1编辑  收藏  举报