2

それは私が学校のためにやっている情報検索の一部です。計画では、単語の最初の2文字をキーとして使用し、2文字が文字列値として保存されている単語のハッシュマップを作成します。それで、

hashmap ["ba"]="悪い大麦ベース"

行のトークン化が完了したら、そのハッシュマップを取得してシリアル化し、キーにちなんで名付けられたテキストファイルに追加します。

アイデアは、データを取得して数百のファイルに分散させると、各ファイルの密度を下げることで、検索の実行にかかる時間を短縮できるということです。私が遭遇している問題は、実行ごとに100以上のファイルを作成しているときに、何らかの理由でいくつかのファイルの作成が妨げられ、それらのエントリが空になることです。これをより効率的にする方法はありますか?これを続ける価値はありますか、それとも私はそれを放棄する必要がありますか?

私はPHPを使用していることを述べたいと思います。私が比較的親密に知っている2つの言語は、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がないため、ハッシュマップを使用して一致するドキュメントを検索する方法がわかりません。

全文検索エンジンが必要な場合は、データ構造にトライを使用することを検討します。大きくなりすぎずに、すべてを収めることができるはずです。インデックスを作成する単語に一致するノードには、その単語を含むドキュメントのIDが含まれます。

于 2010-04-09T17:13:37.213 に答える