Luceneインデックスを利用するアプリケーションを作成しています。は、インデックス付きドキュメントを頻繁に更新または削除する必要があります。Lucene用に必要な空きディスク容量IndexWriter.ExpungeDeletes()
が、私は誰かがLuceneのインデックスから削除のマークを付けた文書の永久削除を望んでいるならば、彼は二つの選択肢があることを理解する:
Indexwriter.Optimize()OR
Indexwriter.ExpungeDeletesを()
すべての削除セッションのインデックスを最適化するには、高価で時間がかかるため、が必要です2倍の空きディスク容量なので、ディスク容量が不足している状況では、Optimize()は適切ではないようです。
明らかに、ExpungeDeletes()は、時間の節約とすべてのセグメントのマージを強制しないため、2倍の空き領域は必要ないと主張しています。
ただし、この操作では、特定のセグメントを正常にマージするために、空きディスク領域が必要です。
だから、私の質問は:ExpungeDeletesため
を必要とするどのくらいの空きディスク()が正常にそのタスクを完了するために?
私はすでに最適化されている単一のセグメントにマージされたいくつかのインデックスを使ってテストしたので、この質問をしています...そして、expungedeletes()はこのケースでは空きディスクスペースまた、私は上記の場合にスローされることから、この例外を防ぐことができますどのような方法がありMergePolicy-MergeExceptionが
:それは例外をスロー他、インデックスと少なくとも同じ大きさ?
ありがとうございます。