什么是倒排索引?
倒排索引(Inverted Index)是一种让搜索变快的技术,是ES和大多数搜索引擎的核心。
1. 正排索引 vs 倒排索引
-
正排索引 :
记录"每个文档里有哪些词"
比如:
- 文档1:我 爱 北京 天安门
- 文档2:北京 欢迎 你
- 文档3:我 爱 你 中国
-
倒排索引 :
记录"每个词在哪些文档里出现过"
比如:
- 我:文档1、文档3
- 爱:文档1、文档3
- 北京:文档1、文档2
- 你:文档2、文档3
- 天安门:文档1
- 欢迎:文档2
- 中国:文档3
2. 为什么要用倒排索引?
假如你要查"北京"这个词在哪些文档里出现过:
- 用正排索引:要把所有文档都看一遍,效率很低。
- 用倒排索引:直接查"北京"这个词,立刻知道是文档1和文档2,非常快!
3. 形象比喻
倒排索引就像一本"词语字典",
你查一个词,字典会告诉你这个词在哪些文章里出现过。
4. 在ES中的作用
- ES把每个文档分词后,建立倒排索引。
- 当你搜索一个词时,ES能秒级找到包含这个词的所有文档。
总结一句话
倒排索引就是"词到文档"的映射表,让搜索变得又快又高效。