31得票4回答
全文搜索(如网络搜索)中多词查询的索引使用

我知道全文搜索的一个基本方面是使用倒排索引。因此,使用倒排索引可以轻松回答单词查询。假设索引结构如下: 某个词语 -> [doc385,doc211,doc39977,...](按排名排序,降序) 为了回答该单词的查询,只需在索引中找到正确的条目(需要O(log n)时间),并从索引...

25得票6回答
反转一个包含列表值的字典

我有这个索引作为一个字典。 index = { 'Testfil2.txt': ['nisse', 'hue', 'abe', 'pind'], 'Testfil1.txt': ['hue', 'abe', 'tosse', 'svend']} 我需要将索引反转,使其成为...

21得票2回答
搜索引擎如何从倒排索引中合并结果?

搜索引擎如何合并倒排索引的结果? 例如,如果我搜索单词“dog”和“bat”的倒排索引,那么将会有两个包含这两个词的文档的巨大列表。 我怀疑搜索引擎是否逐一遍历这些列表,并尝试找到与列表结果匹配的内容。算法上需要如何处理才能使此合并过程更快?

19得票1回答
露西恩算法

我阅读了Doug Cutting的论文:“用于总排名的空间优化”。 由于它是很久以前写的,我想知道Lucene使用什么算法(关于倒排列表遍历和得分计算,排名方面)。 特别是,在那里描述的总排名算法涉及每个查询术语的整个倒排列表遍历,因此在像“黄色狗”这样非常常见的查询术语的情况下,两个术语...

15得票3回答
正排索引 vs 倒排索引,为什么要使用它们?

我在阅读倒排索引的相关内容(这种技术被文本搜索引擎如Solr、Elastic Search等所使用),根据我的理解(以"Person"为例): 人与属性的关系是倒置的:John -> PersonId(1), PersonId(2), PersonId(3) London -> ...

13得票5回答
使用Python pickle加载大型字典

我有一个完整的倒排索引,以嵌套的Python字典形式呈现。它的结构如下:{word : { doc_name : [location_list] } } 例如,假设字典名称为index,那么单词"spam"的记录将如下所示:{ spam : { doc1.txt : [102,300,399]...

12得票4回答
如何优化倒排索引和关系型数据库的“文本搜索”?

更新于2022-08-12 我重新思考了一下,意识到我过于复杂化了它。我发现增强这个系统的最佳方法是使用传统的信息检索技术,即使用单词在句子中的“位置”和“排名”查询来显示最佳匹配。该方法如下图所示: 更新于2015-10-15 早在2012年,我就正在构建一个个人在线应用程序,实际上想要...

8得票3回答
倒排索引:在一组文档中查找短语

我正在实现一个倒排索引结构,特别是一个允许布尔查询并且具有词级粒度的索引结构。 我有一个大型文本数据库,并且我保留了一个索引表告诉我每个单词在哪个文件(IDdoc)中以及在文件中的位置(position)。 (一个单词可能在多个文件中出现,在一个文件中也可能出现在多个位置。) 因此,我为每...

8得票3回答
使用cPickle序列化一个大字典导致了MemoryError

我正在为一组文档编写搜索引擎的倒排索引。目前,我将索引存储为字典的字典。也就是说,每个关键字映射到一个文档ID->出现位置列表的字典。 数据模型类似于: {word : { doc_name : [location_list] } } 在内存中构建索引很好用,但是当我尝试将其序列化到磁盘时...

7得票1回答
B树索引与倒排索引的区别?

以下是我对两者的理解: B 树索引:通常用于数据库列中。它将列内容作为键,行 ID 作为值进行保存,并按照排序方式保持键以快速查找键和行位置。 倒排索引:通常用于全文搜索。这里文档中的单词也起到了键的作用,并且按照排序方式存储,同时与文档位置/ID一起保存为值。 那么B树索引和倒排索引之...