4

約 1 億 6000 万のテキスト ファイルの Lucene インデックスを構築するプログラムを 2 日間実行しました。プログラムが終了した後、インデックスを検索しようとしたところ、インデックスが正しく構築されていないことがわかりました。indexReader.numDocs() は 0 を返しました。インデックス ディレクトリ、それは良さそうに見えました。すべてのインデックス データがそこにあるように見えました。ディレクトリのサイズは 1.5 ギガバイトです。

コードを確認したところ、indexWriter.optimize() と indexWriter.close() を呼び出すのを忘れていたことがわかりました。インデックス全体を再構築する必要がないように、インデックスを re-optimize() できるかどうかを知りたいです。最初から?プログラムにさらに 2 日もかかりたくありません。

4

1 に答える 1

3

呼び出しIndexWriter.optimize()は必要なく、後でインデックスを再度開くことで呼び出すことができます。インデックス内のドキュメントを最適化して読み取りパフォーマンスを向上させるだけで、それ以外には何の影響もありません。

ただし、呼び出すのを忘れた場合IndexWriter.close()は、インデックスが完全ではない可能性があります。非常に多くのドキュメントを処理したため、ほとんどのドキュメントがフラッシュされた可能性が高いため、最後のドキュメントのみを再インデックスする必要があることを願っています。UI で提案されているようにLukeを使用して、インデックスをすばやく参照し、その状態を確認します。

于 2011-03-21T06:36:26.910 に答える