首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >协助建立倒排索引

协助建立倒排索引
EN

Stack Overflow用户
提问于 2010-04-03 03:44:44
回答 2查看 2.1K关注 0票数 2

这是我为学校做的信息检索工作的一部分。其计划是使用单词的前两个字母作为键创建单词的哈希映射,以及将两个字母保存为字符串值的任何单词。所以,

hashmap"ba“=”坏大麦基地“

完成了对一行的标记之后,我获取该hashmap,将其序列化,并将其附加到以键命名的文本文件中。

这样做的想法是,如果我将我的数据分散到数百个文件中,我将通过降低每个文件的密度来减少完成搜索所需的时间。我遇到的问题是,当我在每次运行中生成100+文件时,无论出于什么原因,创建几个文件都会遇到瓶颈,因此这些条目是空的。有什么办法让这更有效率吗?是否值得继续这样做,还是我应该放弃它?

我想提一下我正在使用PHP。我比较熟悉的两种语言是PHP和Java。我选择PHP是因为前端非常简单,并且我可以添加像自动完成/建议搜索这样的功能,而不会出现问题。我也认为使用Java没有好处。任何帮助都是非常感谢的,谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-03 04:09:46

我会使用一个文件来获取和放置序列化的字符串。我还会使用json作为序列化。

将数据放在

代码语言:javascript
复制
$string = "bad barley base";
$data = explode(" ",$string);
$hashmap["ba"] = $data;

$jsonContent = json_encode($hashmap);
file_put_contents("a-z.txt",$jsonContent);

获取数据

代码语言:javascript
复制
$jsonContent = file_get_contents("a-z.txt");
$hashmap = json_decode($jsonContent);

foreach($hashmap as $firstTwoCharacters => $value) {
    if ($firstTwoCharacters == 'ba') {
        $wordCount = count($value);
    }
}
票数 2
EN

Stack Overflow用户

发布于 2010-04-09 17:13:37

你没有解释你想要解决的问题。我猜您正在尝试制作一个全文搜索引擎,但是您的hashmap中没有文档I,所以我不知道您是如何使用hashmap找到匹配的文档的。

假设您想要一个全文搜索引擎,我将研究使用trie作为数据结构。你应该能够把所有的东西都装进去,而不让它长得太大。匹配要索引的单词的节点将包含包含该单词的文档的ids。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2570169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档