0

サイズがそれぞれ 4GB を超える多数の大きなファイルをインデックス化して保存できるかどうか疑問に思っていました。1 つの例外を除いて、ドキュメントの検索と検索に問題はありませんでした。一致したドキュメントのコンテンツを取得して強調表示することはできませんでした。以下のコードを使用すると、メモリ不足になることなく検索可能なインデックスを作成できます。

var doc = new Document();
doc.Add(new Field(string, TextReader));

以下の行に変更すると、最終的にメモリ不足の例外が発生します。

new Field(string, TextReader.ReadToEnd(), Field.Store.YES, Field.Index.ANALYZED)

それぞれ 150 MB の 28 個のファイルをインデックス化して保存することができ、一致したテキストを検索して取得することができました。ただし、クエリのパフォーマンスは受け入れられず、2 ~ 3 回の検索の後、メモリ不足の例外がスローされました。例外の理由とその発生理由を理解しています。コミュニティへの質問は、私が何か欠けているのではないかということです。Lucene API 内に問題を解決する機能はありますか? ファイルを分割し、複数のサーバー間でアプリケーションを水平にスケーリングしてファイルチャンクを作成することなく、達成したいことを実行するソリューションを既に持っています。

前もって感謝します!

4

1 に答える 1

1

これらのファイルを Lucene indexに保存する必要は本当にありますか? これにより、オーバーヘッドが追加され、すべてが遅くなります。

これらのファイルをファイル システムに保存し、Lucene ドキュメント (例: /path/to/file) にパス参照を設定するだけです。

ただし、十分な量の RAM が利用可能であれば、コンテンツのインデックス作成は問題ありません。

于 2013-05-22T08:36:28.067 に答える