2017-04-26 16 views
0

是否可以告訴Lucene按順序寫入其段並且大小固定?通過這種方式,我們將避免對大型部分很重的合併。 Lucene的LogMergePolicy類具有類似的功能,可以通過doc數量或文件大小設置最大段大小,但這只是合併的限制。在Lucene中關閉固定大小的順序段合併

回答

0

您可以使用NRTCachingDirectory在內存中執行小型段合併,只有在達到〜256MiB左右時纔將它們寫入磁盤。

但基本上合併是必要的,因爲像FST這樣的數據結構是一次寫入的,並且通過創建一個新的數據結構進行修改。

也許這可以結合NoMergePolicy爲FilesystemDirectory它不會執行進一步的合併。但是,這將有非常糟糕的查詢性能。

也許做手工,並以某種方式合併在一次將它們合併(通過設置TieredMergePolicy.setMaxMergeAtOnceExplicit())

但合併只是做生意的成本,可能會更好習慣它和調整MergePolicy到你的工作量。

+0

由於數據丟失的可能性,將段寫入RAM不是我的選擇。在我的情況下,數據是永不改變的日誌,所以避免合併會提高性能。 – cybersoft