问题标签 [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.
database - 创建巨大倒排索引的方法
我想创建一个大约 10 6 个术语的大倒排索引。你会建议什么方法?我正在考虑使用快速二进制密钥存储数据库,如 Tokyo cabinet、voldemort 等。编辑:我过去曾尝试使用 MySQL 存储一个包含两个整数的表来表示倒排索引,但即使第一列有一个 db索引,查询很慢。我认为对于这些情况,SQL 数据库有太多开销、事务开销、查询解析等。我正在寻找哪些技术或算法方法可以扩展,同时具有良好的响应时间和性能。出于研究目的,我正在推出自己的解决方案。
search-engine - 搜索引擎中的倒排索引
我正在尝试编写一些代码来制作一个用于从文件中搜索文本的小型应用程序。
应该抓取文件,我需要放置一个倒排索引来促进搜索。
我的问题是我对解析器的样子有一些想法。我愿意在查询中实现 AND、NOT 或 OR。
然而,我无法弄清楚我的索引应该如何......我从未创建过倒排索引,所以如果有人能提出一种可行的方法来做到这一点,我将非常感激。我在理论上知道它是如何工作的,但我的问题是我完全不知道如何在 MySql 中实现。我也需要给被索引的关键字一个权重。
algorithm - 搜索引擎如何合并倒排索引的结果?
搜索引擎如何合并倒排索引的结果?
例如,如果我搜索单词“dog”和“bat”的倒排索引,每个包含这两个单词之一的文档都会有两个巨大的列表。
我怀疑搜索引擎是否会遍历这些列表,一次一个文档,并尝试查找与列表结果匹配的内容。在算法上做了什么来使这个合并过程变得非常快?
indexing - 建立倒排索引的最佳方法是什么?
我正在构建一个小型网络搜索引擎,用于搜索大约 100 万个网页,我想知道构建倒排索引的最佳方法是什么?使用 DBMS 还是什么……?从存储成本、性能、索引和查询速度等许多不同的角度?而且我不想使用任何开源项目,我想自己做一个!
php - 协助建立倒排索引
这是我为学校做的信息检索工作的一部分。该计划是使用单词的前两个字母作为键创建单词的哈希图,并将具有两个字母的任何单词保存为字符串值。所以,
hashmap["ba"] = "坏大麦基地"
一旦我完成了对一行的标记,我将获取该哈希图,将其序列化,并将其附加到以密钥命名的文本文件中。
这个想法是,如果我将数据分散到数百个文件中,我将通过降低每个文件的密度来减少完成搜索所需的时间。我遇到的问题是,当我在每次运行中创建 100 多个文件时,无论出于何种原因,它碰巧在创建一些文件时窒息,因此这些条目是空的。有什么办法可以提高效率吗?是否值得继续这样做,还是应该放弃它?
我想提一下我正在使用 PHP。我比较熟悉的两种语言是 PHP 和 Java。我选择 PHP 是因为前端操作起来非常简单,而且我可以毫无问题地添加自动完成/建议搜索等功能。我也认为使用 Java 没有任何好处。任何帮助表示赞赏,谢谢。
search - 如何在倒排索引结构中搜索短语查询?
如果我们想在倒排索引结构中搜索“t1 t2 t3”(t1,t2,t3 必须排队)这样的查询,我们应该怎么做?
1-首先我们搜索 "t1" 术语并找到包含 "t1" 的所有文档,然后对 "t2" 和 "t3" 执行此工作。然后找到“t1”、“t2”和“t3”位置相邻的文档。
2-首先我们搜索“t1”词并找到所有包含“t1”的文档,然后在我们找到的所有文档中,我们搜索“t2”,接下来,在这个结果中,我们找到包含“t3”的文档” 。
我有一个完整的倒排索引。我想知道上面哪些方式是优化的,(1)还是(2)?
多谢。
database - 我已经为一个网站创建了倒排索引,但是在哪里存储呢?搜索引擎的数据库?
什么可以是搜索引擎的数据库?我的意思是在为站点创建倒排索引之后,可以将其存储在其中,以便程序可以为其他站点创建索引并保存它们。稍后索引器也可以查询它们。因为指数可以达到数千亿。
python - 如何在python中获取文件中的字节偏移量
我正在使用 hadoop 和 python 制作倒排索引。我想知道如何在 python 中包含行/单词的字节偏移量。我需要这样的东西
我需要制作完整倒排索引的位置。请帮忙。
python - 存储倒排索引
我正在做一个关于信息检索的项目。我使用 Hadoop/Python 制作了一个完整的倒排索引。Hadoop 将索引输出为 (word,documentlist) 对,这些对被写入文件中。为了快速访问,我使用上述文件创建了一个字典(哈希表)。我的问题是,我如何在磁盘上存储这样一个索引,它也具有快速访问时间。目前我正在使用 python pickle 模块存储字典并从中加载,但它会将整个索引一次带入内存(或者是吗?)。请提出一种有效的存储和搜索索引的方法。
我的字典结构如下(使用嵌套字典)
{word : {doc1:[locations], doc2:[locations], ....}}
这样我就可以通过 dictionary[word].keys() ... 等获取包含单词的文档。
python - 在倒排索引中搜索普通查询
我有一个嵌套 python 字典形式的完整倒排索引。它的结构是:
{word:{ doc_name:[location_list]}}
例如让字典被称为索引,那么对于一个单词“垃圾邮件”,条目将如下所示:
{垃圾邮件:{ doc1.txt:[102,300,399],doc5.txt:[200,587]}}
因此,包含任何单词的文档可以由index[word].keys()给出,并且该文档中的频率由len(index[word][document])
现在我的问题是,如何在这个索引中实现正常的查询搜索。即给定一个包含让我们说 4 个单词的查询,查找包含所有四个匹配项的文档(按总出现频率排名),然后查找包含 3 个匹配项的文档,依此类推....
**
使用 S. Lott 的答案添加了此代码。这是我写的代码。它完全按照我的意愿工作,(只需要一些输出格式)但我知道它可以改进。
**
请评论....谢谢。