微信登录

索引 - 倒排索引 - 按词项快速定位文档集合

倒排索引(Inverted Index)简介

倒排索引是信息检索领域最核心的数据结构之一,用于快速定位包含特定词项的文档集合。与传统的“文档→词项”的正排索引不同,倒排索引是“词项→文档”的逆向映射,因此称为“倒排”。

核心思想

  1. 逆向映射:为每个词项维护一个列表,记录所有包含该词项的文档ID。
  2. 快速查询:通过词项直接找到相关文档,无需逐一遍历所有文档。

倒排索引的构建与示例

示例数据集

假设有3个文档:

  • 文档1: “苹果手机”
  • 文档2: “苹果电脑”
  • 文档3: “香蕉手机”

分词后的词项

对每个文档分词得到词项(假设按分词结果为单个词语):

  • 文档1 → [“苹果”, “手机”]
  • 文档2 → [“苹果”, “电脑”]
  • 文档3 → [“香蕉”, “手机”]

构建倒排索引

通过词项映射到文档集合,结果如下:

  • 苹果 → [文档1, 文档2]
  • 手机 → [文档1, 文档3]
  • 电脑 → [文档2]
  • 香蕉 → [文档3]

可视化表格

词项 文档ID列表
苹果 [1, 2]
手机 [1, 3]
电脑 [2]
香蕉 [3]

如何工作?

  1. 查询场景

    • 用户搜索“苹果” → 系统直接返回文档1和文档2。
    • 用户搜索“手机” → 返回文档1和文档3。
    • 组合查询(如“苹果 AND 手机”) → 取交集得到文档1。
  2. 优化性能

    • 词项归一化:忽略大小写、复数形式(如”apple”和”Apple”统一为”apple”)。
    • 压缩存储:对文档ID列表进行差值编码(如[100, 101, 103]存储为100,1,2)。

实际应用场景

  1. 搜索引擎(如Google、百度): 用户输入关键词,快速返回网页。
  2. 数据库全文检索(如Elasticsearch): 支持对文本字段的高效模糊搜索。
  3. 推荐系统:根据用户搜索词快速筛选关联内容。

总结

倒排索引通过“词项→文档”的映射,将时间复杂度从O(N)(遍历所有文档)降低到O(1)(直接取词项对应列表),是大规模文本检索的基石。其核心价值在于快速定位数据,满足实时查询需求。