Elasticsearch之倒排索引
分类:
文章
•
2024-07-06 17:27:34
搜索引擎
文档ID |
文档内容 |
1 |
elasticsearch是最流行的搜索引擎 |
2 |
php是世界上最好的语言 |
3 |
搜索引擎是如何诞生的 |
单词 |
文档ID列表 |
elasticsearch |
1 |
流行 |
1 |
搜索引擎 |
1,3 |
php |
2 |
世界 |
2 |
最好 |
2 |
语言 |
2 |
如何 |
3 |
诞生 |
3 |

倒排索引-查询流程
- 查询包含“搜索引擎”的文档
- 通过倒排索引获得“搜索引擎”对应的文档Id有1和3
- 通过正排索引查询1和3的完整内容
- 返回用户最终结果
倒排索引组成
- 倒排索引是搜索引擎的核心,主要包含两部分:
- 单词词典(Term Dictionary
- 倒排列表(Posting List)
- 单词词典(Term Dictionary):是倒排索引的重要组成
- 记录所有文档的单词,一般都比较大
- 记录单词到倒排列表的关联信息
- 实现一般使用B + Tree
- 倒排列表(Posting List)记录了单词对应的文档集合,由倒排索引项(Posting)组成
- 倒排列表(Posting List)主要包含如下信息:
- 文档Id,用于获取原始信息
- 单词评率(TF, Term Frequency),记录该单词在该文档的出现次数,用于后续相关性算分
- 位置(Position),记录单词在文档中的分词位置(多个),用于做词语搜索(Phrase Query)
- 偏移(Offset),记录单词在文档的开始和结束位置,用于做高亮显示
以倒排索引为例

单词字典与倒排列表整合在一起的结构如下:

es存储的是一个json格式的文档,其中包含多个字段,每个字段会有自己的倒排索引,类似下图:
