问题标签 [inverted-index]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
329 浏览

lucene - Lucene 倒排索引访问次数

在 Lucene 中,我想知道倒排索引中的访问次数。

也许,Lucene 有这样的倒排索引,

猫狗
----- -----
d01 d02
d02 d01
d03 d03
----- -----

如果我使用查询“猫狗”,Lucene 将连续访问倒排索引。然后我问 top-2 结果,只有 4 次访问 Lucene 将返回 d01、d02。在这种情况下,我想知道访问时间(在本例中为“4”)。

目前,我像这样使用Lucene。

谢谢你。

0 投票
1 回答
615 浏览

ruby - 在 Ruby 中创建倒排索引哈希

我正在做一个新项目,我必须开发一个可以存储在文件数据库(例如 CouchDB)中的倒排索引。我正在使用 Ruby 1.8.7 进行编码。

这是倒排索引的格式:

我想要一种使用 CouchDB 之类的方法,我可以通过如下一系列检查来创建条目:

  • 如果第二个哈希键(即#linux)尚未创建,则创建它
  • patch如果尚未创建第三个哈希键(即),则创建它并将其值设置为1
  • 每次再次出现相同的单词['en']['#linux']或任何变量时,重复计数(最右边的值)并将其增加一。

我仅使用基本哈希就可以很好地解决问题,但是当我将脚本设置为通过大约 1TB 或更多的文本时,将这些放在内存中并不是很好。

选择的答案

选定的答案非常适合这个。唯一的区别是对语法进行了一些细微的更改,其工作方式如下:

0 投票
2 回答
2024 浏览

python - 使用 Python 的倒排索引系统

我正在使用 Python 构建倒排索引。

我对它可以为我提供的性能有一些疑问。

Python 在索引方面会几乎与 Java 或 C 一样快吗?

另外,我想知道是否存在任何模块/实现(以及它们是什么,请提供一些链接?),以及与 Java/C 开发的东西相比,它们的性能如何?

我读到这个人用 Psyco 优化他的 Python 的速度是 C 的两倍。

我知道这是一种误导,因为 gcc 3.x 编译器非常快。基本上,我的观点是我知道 Python 不会比 C 快。但它有可比性吗?与Java相比,有人可以阐明它的性能吗?我对此一无所知。(就倒排索引实现而言,如果可能的话,因为它本质上需要磁盘写入和读取。)

我不是在没有先谷歌搜索的情况下在这里问这个问题。我没有得到明确的答案,因此提出了问题。

任何帮助深表感谢!

0 投票
2 回答
339 浏览

algorithm - 倒排列表并集

给 k 个排序倒排列表,我想要一个有效的算法来获得这些 k 个列表的并集?每个倒排列表都是内存中的只读数组,每个列表都包含排序后的整数。结果将保存在一个足够大的预定义数组中。有没有比 k-way 合并更好的算法?

0 投票
2 回答
2954 浏览

python - Python倒排索引效率

我正在编写一些 Python 代码来实现我最近学习的一些与倒排索引/发布列表相关的概念。我对 Python 很陌生,在某些情况下很难理解它的效率。

从理论上讲,创建一组文档 D 的倒排索引,每个文档都有一个唯一的 ID,doc_id应该包括:

  1. 解析/执行 D 中每个文档的词法分析
  2. 删除停用词,执行词干等。
  3. 创建所有(word,doc_id)对的列表
  4. 对列表进行排序
  5. 将重复项压缩为{word:[set_of_all_doc_ids]} (倒排索引)

第 5 步通常是通过一个包含带有元数据(词频、字节偏移)的词和指向发布列表(它出现在其中的文档列表)的指针的字典来执行的。发布列表通常被实现为允许有效随机插入的数据结构,即链表。

我的问题是 Python 是一种高级语言,直接使用内存指针(以及链表)之类的东西似乎超出了范围。我在分析之前进行了优化,因为对于非常大的数据集,众所周知,必须最大化效率才能在合理的时间内保留任何计算索引的能力。

SO上有其他几篇关于Python倒排索引的帖子,就像我当前的实现一样,它们使用字典将键映射到列表(或集合)。是否期望这种方法与允许直接编码指向链表的指针的语言具有相似的性能?

0 投票
0 回答
1162 浏览

database - 从 SQLite FTS 表中获取倒排索引

在我使用 Sqlite 和 FTS 表在我的应用程序中实现全文搜索功能后,我会对从 FTS 表中检索 FUL​​L 倒排索引的高效方式感兴趣。实际上 - 我需要一个结果表,包括所有术语之间的映射 -> docid's -> 出现次数。

遵循 Sqlite FTS文档- 创建表之后

...和内容插入...

...而不是像 FTS AUX 表中那样在所有文档中仅包含术语和出现次数...

我的结果应该如下表所示:

我仍然不确定对文档集合中所有术语的简单匹配查询是否足够有效 - 也许有更直接的方法?

0 投票
2 回答
1368 浏览

java - 如何将倒排文档索引存储在磁盘上?

我知道这个问题在 stackoverflow 和 google 中被一次又一次地问到,但我发现所有的答案都不能让我满意。大多数解决方案都假设整个索引可以放在内存中,然后我们可以通过Java序列化将其存储到磁盘中。当需要索引时,我们必须将整个索引加载到内存中。像这样的解决方案: 解决方案 1解决方案 2。但是我们知道,这个假设并不总是正确的,那么当倒排文档索引不适合内存时,我应该怎么做才能将它存储到磁盘呢?

如果您能用 Java 给我解决方案,我将不胜感激。

0 投票
1 回答
197 浏览

lucene - 从发布列表中删除条目 Lucene 4.0

我需要从发布列表中删除条目。如何在 Lucene 4.0 中做到这一点?我需要这样做来测试不同的修剪算法。

提前致谢

ZP

0 投票
1 回答
510 浏览

c++ - 实时搜索引擎的算法有哪些?

倒排索引旨在快速搜索但不那么容易更新。据我所知,增量索引用于更新倒排索引数据。

那么实时搜索的算法或主要概念是什么,他们是如何做到的呢?

0 投票
1 回答
396 浏览

file - 文件格式需要倒排索引

我一直在研究反向索引,它索引文档集合,将每个术语与信息一起存储,并将其引用存储在发布文件中(文档 ID、位置等)。

目前我将它存储为 .txt 文件格式,需要为与该 .txt 文件相关的每个查询进行字符串匹配,这需要更多时间并且更复杂。

现在我想将该信息存储在像链表样式数据结构这样的文件中。对于这种情况,这是否可能......(而且我正在使用 PHP 语言进行索引)。

任何帮助将不胜感激,谢谢。