1 億の文字列 (重複文字列なし) を持つ大きなテキスト ファイル (1.5 Gb) があり、すべての文字列はファイル内で行ごとに配置されています。ユーザーがキーワード (部分文字列) を指定すると、そのキーワードを含むファイルに存在するすべての文字列の数を取得できるように、Java で wepapplication を作成したいと考えています。LUCENE の 1 つのテクニックは既に知っています。これを行う他の方法はありますか?? 3〜4秒以内に結果が欲しい。私のシステムには 4GB の RAM とデュアルコア構成があります....「JAVA のみ」でこれを行う必要があります
質問する
2131 次
4 に答える
0
ファイルのサイズよりも多くのRAMがあるため、データ全体を構造体としてRAMに格納し、非常にすばやく検索できる場合があります。トライは、使用するのに適したデータ構造である可能性があります。プレフィックスの検索は高速ですが、サブストリングに対してどのように機能するかはわかりません。
于 2013-02-03T16:13:55.220 に答える
0
ハッシュ テーブルを使用してみてください。実行できるもう 1 つのことは、MAP-REDUCE と同様の方法です。私が言いたいのは、逆インデックスを使用してみることができるということです。Google も同じ手法を使用しています。I、am、the、a、an、in、on など、無視できる単語を入れることができるストップワードのファイルを作成できます。
これが私が可能だと思う唯一のことです。検索のために配列を使用できることをどこかで読みました。
于 2013-02-01T05:16:14.013 に答える