【问题标题】:Is there an algorithm that takes advantage of an alphabetized inverted index?有没有利用按字母顺序排列的倒排索引的算法?
【发布时间】:2020-12-12 00:20:02
【问题描述】:

我正在使用 Python 进行信息检索项目。我阅读的多个来源,包括this book,都强调按字母顺序存储倒排索引,尽管我没有发现这样做的任何好处。

我读过的许多文件都建议按以下方式存储项目:

aardvark -> doc6, doc5, doc10
apple -> doc1, doc8
...
zebra -> doc7

按字母顺序存储记录如何提高速度?在检索数据时有什么方法可以利用这个字母顺序吗?

【问题讨论】:

    标签: performance search information-retrieval alphabetical inverted-index


    【解决方案1】:

    想象一下,如果索引太大以至于无法容纳在单台机器的内存中。
    然后我们必须将索引划分为多个较小的索引并存储在多台机器中。

    假设一台机器可以存储 1000 个条目,我们总共有 100000 个条目要索引;这意味着我们需要 100 台机器来存储所有条目。

    现在如果键是按字母顺序存储的,那么通过二分查找查找单词会变得更容易。

    例子:

    让我们说前缀介于 aaad 之间的单词存储在机器 1 中。
    前缀在aeba之间的单词存储在机器2中。
    ...
    ...
    ...
    带有前缀yh - zz 的单词存储在机器 100 中。

    每当我们收到查询请求时,我们只是对单词的前缀进行二进制搜索,以找到其条目存储的机器,时间复杂度为 O(nlogn)。
    如果索引以随机顺序存储,那么我们将不得不在所有机器中一个一个地搜索单词,导致时间复杂度为 O(n)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-29
      相关资源
      最近更新 更多