目前我正在寫完成後調用編寫器的優化方法。由於我的數據集很大,需要很長時間(並且需要更多空間(2 *實際大小))來優化索引。我非常關心這個問題,因爲很多文件經常包含在索引中。寫入後優化lucene索引是否是強制性的?
所以
- 是否確定要關閉優化?
- 性能影響是什麼,比如在沒有優化的情況下查詢速度有多慢?
乾杯
目前我正在寫完成後調用編寫器的優化方法。由於我的數據集很大,需要很長時間(並且需要更多空間(2 *實際大小))來優化索引。我非常關心這個問題,因爲很多文件經常包含在索引中。寫入後優化lucene索引是否是強制性的?
所以
乾杯
的Lucene FAQ說:
什麼是指標的優化和什麼時候應該使用它?
IndexWriter類支持一種優化()方法,該方法可以壓縮索引數據庫並加快查詢速度。執行文檔集的完整索引或索引的增量更新後,您可能想要使用此方法。如果您的增量更新頻繁添加文檔,您只需稍後執行一次優化,以避免優化的額外開銷。
如果我決定不優化索引,刪除的文檔何時會被刪除?
被刪除的文檔被標記爲已刪除。但是,在索引優化之前,它們在索引中佔用的空間不會被回收。即使索引未得到優化,隨着更多文檔被添加到索引中,該空間也將最終被回收。
您最瞭解您的數據,因此我建議您執行一些測試來衡量您的查詢運行速度有多快,而沒有optimize
步驟。
根據javadocs的說法,「在頻繁更新的環境中,如果有的話,最好在低音量時間進行優化」。您只應在必要時進行優化。如果自上次優化以來,只有5%的文檔發生了變化,那麼就沒有必要,因此應該瞭解文檔更改的頻率。也許你不太經常,比如說每幾個小時一次,或者每天一次。
另請參閱this thread,他們建議不要在索引不斷更新的環境中調用優化,而應選擇設置較低的mergeFactor
。
感謝您的鏈接.. :) – RameshVel 2010-10-12 07:55:45
這真的有幫助....... :) – RameshVel 2010-10-12 07:54:38