倒排索引是搜索引擎最核心的数据结构。简单说,就是从文档找词变成从词找文档。
正向索引是这样的: 文档1 → [词A, 词B, 词C] 文档2 → [词B, 词D]
倒排索引反过来: 词A → [文档1] 词B → [文档1, 文档2] 词C → [文档1] 词D → [文档2]
这样设计的好处是查询快。想搜包含词B的文档,直接拿列表就行,不用遍历所有文档。
实际应用中,倒排列表还会记录词在文档中的位置和出现次数,方便做短语匹配和相关性计算。
Lucene 和 Elasticsearch 底层都是基于倒排索引实现的。理解这个原理,对优化查询性能很有帮助。
[尊重社区原创,转载请保留或注明出处]
本文地址:http://elasticsearch.cn/article/15686
本文地址:http://elasticsearch.cn/article/15686