2016-12-01 62 views
1

我有一個Lucene的用例,其中所需的搜索類型非常簡單。我可能會使用沒有存儲字段或任何複雜插件的DOCS_ONLY索引。這些文件是非結構化的英文文本。優化Lucene的壓縮比

對於此用例,要優化的最重要的事情是原始文檔與索引的磁盤大小的壓縮比。 Lucene索引應該儘可能小,即使犧牲增加的搜索和更新延遲也是如此。

我想知道我應該如何配置Lucene(任何版本)來完成此操作。特別是,應該使用什麼編解碼器?有沒有強調搜索速度的壓縮?有沒有其他設置我可以調整,將優化發佈列表壓縮?

tl; dr:對於Lucene中的DOCS_ONLY索引,我該如何使索引儘可能小?

回答

2

一般來說,減少索引大小的關鍵思路是儘量少存儲索引儘可能少。

在爲您的問題得到正確答案之前,先回答一些問題。例如,您的指數有多大,以及您預期其指數有多大?我這樣問,因爲它可能不值得您花時間嘗試將索引大小降低到某個閾值以下。

我以前看到的那樣,人們使用 SimpleAnalyzer寫在索引中的文件,而不是使用StandardAnalyzer(這需要更多的存儲空間一般),但影響了搜索性能降低索引大小高達40%-50%。您在文章中提到您已準備好承擔搜索時間的增加,但您是否準備犧牲搜索性能?這是一個非常重要的問題。如果您已經達到了閾值,那麼不值得努力減小索引的大小!

還有其他一些因素,我看到人們的變化,以減少規模。例如,根據文檔Index.NO_NORMS將在索引中爲每個文檔節省一個字節。即使有時人們會說,爲了壓縮數字數據(我從來沒有檢查過自己),可以改變索引/存儲在索引中的數字的基數。

此外,我想這兩個以下職位在SO將有助於你。

(1)SOLR index size reduction (2)How to reduce the size of a generated Lucene/Solr index?

您可以參閱post了。

+0

確切的大小在這一點上很難說明,但在原始文檔大小方面100GB +並不在可能性範圍之外。更新和刪除不會經常發生。 – pg1989