
博客目录
倒排索引(Inverted Index)是信息检索系统中常用的数据结构,用于快速查找包含特定单词或词项的文档。它是搜索引擎、数据库全文检索等应用的核心技术之一。

基本概念
倒排索引与传统的"正排索引"(文档 → 单词列表)相反,其结构是:
单词 → 文档列表的映射关系。
倒排索引的组成
-
词项词典(Term Dictionary):
- 包含所有不重复的词项(分词后的单词)
- 通常按字典序排序,便于查找
-
倒排列表(Posting List):
- 对每个词项,记录包含该词项的所有文档 ID 列表
- 通常还会存储词项在文档中的位置、频率等信息
构建过程
-
文档分析:
- 对每个文档进行分词、去除停用词、词干提取等处理
-
词项处理:
- 将词项标准化(如转为小写)
- 可能进行词干还原或同义词扩展
-
索引构建:
- 为每个词项建立到文档的映射
- 记录词项在文档中的位置、频率等信息
查询处理
当用户输入查询时:
- 对查询词进行同样的分词和处理
- 在词项词典中查找每个词项
- 获取对应的倒排列表
- 对多个词项的倒排列表进行合并(AND/OR 操作)
- 按相关性排序返回结果
优化技术
-
压缩存储:
- 文档 ID 通常使用增量编码(Delta Encoding)然后进行变长编码
- 常见算法:Elias-Fano 编码、Variable Byte 编码等
-
分布式索引:
- 将索引分片存储在多台机器上
- 常用方法:按文档 ID 分片或按词项分片
-
内存优化:
- 使用跳跃表(Skip List)加速倒排列表的合并操作
- 对高频词使用特殊处理
应用场景
- 搜索引擎
- 数据库全文检索
- 文档管理系统
- 代码搜索工具
- 任何需要快速文本检索的场景
倒排索引之所以高效,是因为它将"哪些文档包含这个词"的查询转换为简单的字典查找和列表合并操作,避免了全文档扫描。
觉得有用的话点个赞
👍🏻呗。❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙
