2

200 万個の文字列があり、それぞれ 1 TB のテキスト データを検索する必要があります。それらすべてを検索することは最善の解決策ではないため、すべての文字列に対して trie のようなデータ構造を作成するより良い方法を考えていました。つまり、その中の各ノードが単語であるトライです。この目的に適したアルゴリズム、データ構造、またはライブラリ (C++) はありますか?


この質問についてもっと説明させてください。

たとえば、次のような文字列があります: s1-「愛してる」 s2-「お元気ですか」 s3-「お元気ですか」

t1-「こんにちは、私の名前は Omid です。コンピューターが大好きです。お元気ですか?」t2-「あなたのすべての願いは叶います、彼らは私に言います...」 t3 t4 . . . t10000

次に、各テキストを検討し、それらの各文字列を検索したいと思います。最後に、この例では次のように言います: t1 には s1 が含まれ、他には何も含まれていません。文字列を検索する効率的な方法を探していますが、毎回愚かではありません。

4

2 に答える 2

1

リンクのみの回答を投稿して申し訳ありませんが、研究論文を読んでもかまわない場合、文字列一致アルゴリズムに関する決定的なリファレンスはhttp://www-igm.univ-mlv.fr/~lecroqのようです/string/と、Simone Faro と Thierry Lecroq による次の研究論文では、85 種類以上の異なる文字列マッチング アルゴリズムの相対的なパフォーマンスを比較しています。その中にあなたのニーズに合ったものがあると確信しています。

于 2014-02-18T17:18:32.373 に答える
0

Apache Lucene プロジェクトからのポートであるCLucene ( http://clucene.sourceforge.net/ ) を使用することを強くお勧めします。これにより、逆索引が作成され、テキスト検索が非常に高速になります。言語を変更するオプションがある場合は、CLucene のバージョンが少し古くなっているため、Java でこれを行うことを検討してください。遅くなりますが、より多くの機能があります。

于 2014-02-18T06:27:08.467 に答える