是否有一种算法可以利用按字母顺序排列的倒排索引?

Is there an algorithm that takes advantage of an alphabetized inverted index?

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

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

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

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

想象一下,如果索引太大,单台机器的内存都放不下。
然后我们必须将索引划分为多个较小的索引并存储在多台机器上。

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

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

示例:

假设前缀在 aaad 之间的单词存储在机器 1 中。
前缀在 aeba 之间的单词存储在机器 2.
中 ...
...
...
前缀为 yh - zz 的单词存储在机器 100 中。

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