反向索引是一种索引数据结构 用于存储从内容(例如单词或数字)到其在一个文档或一组文档中的位置的映射。简而言之 它是一种类似于数据结构的哈希图 可将你从单词引导到文档或网页。

还包含每个单词在文档中的位置。后一种形式提供更多功能 但需要更多处理能力和空间来创建。

假设我们要搜索文本"大家好" "本文基于倒排索引" "类似于数据结构的哈希图"。如果我们按(文本 文本中的单词)索引 则文本中具有位置的索引为:

该索引可以具有权重 频率或其他指标。

每当我想搜索"猫"时 我都希望看到包含有关其信息的文档。但是文档中出现的单词称为"猫"或"猫" 而不是"猫"。为了将这两个词联系起来 我将砍下每个阅读的词的一部分 以便获得"词根"。有一些执行此操作的标准工具 例如" Porter’s Stemmer"。

如果单词已经存在 则将文档引用添加到索引 否则创建新条目。添加其他信息 例如单词的频率 单词的位置等。

对所有文档重复此操作 并对单词进行排序。

倒排索引是为了允许快速的全文本搜索 但是当文档添加到数据库中时 以增加处理为代价。

很容易开发。

它是文档检索系统中最流行的数据结构 例如在搜索引擎中得到了大规模使用。

倒排索引也有缺点:

大的存储开销和更新 删除和插入的高维护成本。