2

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

hashmap["ba"] = "坏大麦基地"

一旦我完成了对一行的标记,我将获取该哈希图,将其序列化,并将其附加到以密钥命名的文本文件中。

这个想法是,如果我将数据分散到数百个文件中,我将通过降低每个文件的密度来减少完成搜索所需的时间。我遇到的问题是,当我在每次运行中创建 100 多个文件时,无论出于何种原因,它碰巧在创建一些文件时窒息,因此这些条目是空的。有什么办法可以提高效率吗?是否值得继续这样做,还是应该放弃它?

我想提一下我正在使用 PHP。我比较熟悉的两种语言是 PHP 和 Java。我选择 PHP 是因为前端操作起来非常简单,而且我可以毫无问题地添加自动完成/建议搜索等功能。我也认为使用 Java 没有任何好处。任何帮助表示赞赏,谢谢。

4

2 回答 2

2

我会使用一个文件来获取和放置序列化的字符串。我也会使用 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-03T04:09:46.467 回答
0

您没有解释您要解决的问题。我猜您正在尝试制作一个全文搜索引擎,但您的哈希图中没有文档 ID,所以我不确定您如何使用哈希图查找匹配的文档。

假设您想要一个全文搜索引擎,我会考虑使用trie作为数据结构。您应该能够将所有内容都放入其中而不会变得太大。与您要索引的单词匹配的节点将包含包含该单词的文档的 ID。

于 2010-04-09T17:13:37.213 回答