Elasticsearch 的倒排索引原理?
发布于
一、定义
正排索引:文档 → 词列表。 倒排索引:词 → 文档列表。
二、构建过程
- 文档内容分词,得到词(term)。
- 建立 term → [doc1, doc2, ...] 的映射。
- 记录词频、位置等信息。
三、示例
文档1:Java 面试
文档2:Java 集合
文档3:Redis 缓存
倒排索引:
Java → [1, 2]
面试 → [1]
集合 → [2]
Redis → [3]
缓存 → [3]
查询 "Java" 直接得到文档 1、2。
四、分词
- 英文:按空格和标点分词,转小写,去停用词。
- 中文:IK 分词器(ik_smart 粗粒度、ik_max_word 细粒度)。
- 也可指定 keyword 不分词(精确匹配)。
五、相关度评分
- TF-IDF:词频 × 逆文档频率。
- BM25:ES 默认,TF-IDF 的改进版,考虑词频饱和。