Performance 有没有一种算法可以利用字母顺序的倒排索引?

Performance 有没有一种算法可以利用字母顺序的倒排索引?,performance,search,information-retrieval,alphabetical,inverted-index,Performance,Search,Information Retrieval,Alphabetical,Inverted Index,我正在用Python进行一个信息检索项目。我读到的多个资料,包括,都强调按字母顺序存储反向索引,尽管我没有发现这样做的任何好处 我读过的许多文件建议以以下方式存储项目: aardvark -> doc6, doc5, doc10 apple -> doc1, doc8 ... zebra -> doc7 按字母顺序存储记录如何提高速度?在检索数据时,有什么方法可以利用这个字母顺序吗?想象一下,如果索引太大,无法放入一台机器的内存中。 然后我们必须将索引划分为多个较小的索引,并

我正在用Python进行一个信息检索项目。我读到的多个资料,包括,都强调按字母顺序存储反向索引,尽管我没有发现这样做的任何好处

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

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

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

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

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

现在,如果键按字母顺序存储,那么通过二进制搜索查找单词将变得更容易

例如:

假设前缀介于
aa
ad
之间的单词存储在机器1中。
前缀介于
ae
ba
之间的单词存储在机器2中。



前缀为
yh
-
zz
的单词存储在机器100中

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