ElasticSearch | 倒排索引
正排索引 vs 倒排索引
- 正排索引 - 文档 ID 到文档内容的索引;
- 倒排索引 - 单词到文档 ID 的索引;
倒排索引的核心组成
单词词典 | Term Dictionary
- 记录所有文档的单词;
- 记录单词 -> 倒排列表的关联映射;
- 单词词典一般比较大,可以通过 B+ 树或哈希链法实现,以满足高性能的插入和查询;
倒排列表 | Posting List
- 记录了单词对应的文档集合,由倒排索引项组成;
倒排索引项 | Posting
- 文档 ID;
- 词频 TF - 该单词在文档中出现的次数,用于相关性评分;
- 位置 | Position - 单词在文档中分词的位置,用于语句搜索(Phase Query);
- 偏移 | Offset - 记录单词的开始结束位置,实现高亮显示;
举个栗子 | 单词“ElasticSearch”的倒排列表
-
单词“ElasticSearch”对应的倒排列表:
ElasticSearch 的倒排索引
- ElasticSearch 的 JSON 文档中的每个字段,都有自己的倒排索引;
- 可以指定某些字段不做索引
- 优点:节省存储空间;
- 缺点:字段无法被搜索;