ElasticSearch 倒排索引

说明

在保存数据的同时,es还会分词,并建立 倒排索引

倒排索引

通过一个单词,找到含有这个单词,或者和这个单词有关系的文章:

word -> to -> documents

将这种索引,称为 inverted index,直译过来,应该叫反向索引,国内翻译成 倒排索引

执行过程

分词

html java mysql —> html java mysql

html css js —> html css js

java mysql —> java mysql

保存的数据

保存的数据 和 id 如下:

id 标题
1 html java mysql
2 html css js
3 java mysql

Posting List(倒排列表)

倒排列表记录了出现过某个单词的所有文档的文档列表及单词在该文档中出现的位置信息

  • term:一段文本经过分词后,一个一个的词

  • Posting list就是一个数组,存储了所有符合某个词的文档ID

term Posting List
css 2
html [1,2]
java [1,3]
js 3
mysql [1,3]

查询

比如查询 java html 时,首先进行分词:java、html

然后到 Posting list 去匹配,命中的有:id是 1、2、3 的记录

得分

根据匹配程度计算得分

  • 其中id是 1 的记录,命中 java、html 2个词,得分最高
  • 其中id是 2 的记录,命中 html 1个词。但由于该记录有 3 个词,只命中一个词,所以得分较低
  • 其中id是 3 的记录,命中 java 1个词。得分较高

原文出处:/show_1IX1sGBWDDBJ.html