这是我为学校做的信息检索工作的一部分。其计划是使用单词的前两个字母作为键创建单词的哈希映射,以及将两个字母保存为字符串值的任何单词。所以,
hashmap"ba“=”坏大麦基地“
完成了对一行的标记之后,我获取该hashmap,将其序列化,并将其附加到以键命名的文本文件中。
这样做的想法是,如果我将我的数据分散到数百个文件中,我将通过降低每个文件的密度来减少完成搜索所需的时间。我遇到的问题是,当我在每次运行中生成100+文件时,无论出于什么原因,创建几个文件都会遇到瓶颈,因此这些条目是空的。有什么办法让这更有效率吗?是否值得继续这样做,还是我应该放弃它?
我想提一下我正在使用PHP。我比较熟悉的两种语言是PHP和Java。我选择PHP是因为前端非常简单,并且我可以添加像自动完成/建议搜索这样的功能,而不会出现问题。我也认为使用Java没有好处。任何帮助都是非常感谢的,谢谢。
发布于 2010-04-03 04:09:46
我会使用一个文件来获取和放置序列化的字符串。我还会使用json作为序列化。
将数据放在
$string = "bad barley base";
$data = explode(" ",$string);
$hashmap["ba"] = $data;
$jsonContent = json_encode($hashmap);
file_put_contents("a-z.txt",$jsonContent);获取数据
$jsonContent = file_get_contents("a-z.txt");
$hashmap = json_decode($jsonContent);
foreach($hashmap as $firstTwoCharacters => $value) {
if ($firstTwoCharacters == 'ba') {
$wordCount = count($value);
}
}发布于 2010-04-09 17:13:37
你没有解释你想要解决的问题。我猜您正在尝试制作一个全文搜索引擎,但是您的hashmap中没有文档I,所以我不知道您是如何使用hashmap找到匹配的文档的。
假设您想要一个全文搜索引擎,我将研究使用trie作为数据结构。你应该能够把所有的东西都装进去,而不让它长得太大。匹配要索引的单词的节点将包含包含该单词的文档的ids。
https://stackoverflow.com/questions/2570169
复制相似问题