我不知道是什麼改變了 - 事情與我們的Lucene的實施工作比較好。但是現在,索引目錄中的文件數量正在不斷增長。它從_0文件開始,然後出現_1個文件,然後是_2和_3文件。我傳遞虛假的IndexWriter類的構造函數「創造」的參數,如果在該目錄中的現有文件時,它開始:爲什麼不刪除未使用的段文件?
indexWriter = new IndexWriter(azureDirectory, analyzer, (azureDirectory.ListAll().Length == 0), IndexWriter.MaxFieldLength.UNLIMITED);
if (indexWriter != null)
{
// Set the number of segments to save in memory before writing to disk.
indexWriter.MergeFactor = 1000;
indexWriter.UseCompoundFile = false;
indexWriter.SetRAMBufferSizeMB(800);
...
indexWriter.Dispose(); indexWriter = null;
}
也許這realated到UseCompoundFile標誌?
每隔幾分鐘,我創建了一個新的IndexWriter,處理10,000個文檔,然後清除的IndexWriter。該索引可以工作,但越來越多的文件非常糟糕,因爲我正在使用AzureDirectory,它在啓動Lucene寫入之前將每個文件從Azure複製到緩存目錄中。
謝謝。
我想我已經讀了優化不使用AzureDirectory時候做一個聰明的做法。你有什麼經驗嗎?另外,爲什麼要使用1的MergeFactor?我認爲一個很大的因素會減少寫入文件的速度,從而加快文件的添加速度。謝謝 - 很好地澄清在線提供的衝突信息。 – Jarvis 2013-03-27 20:02:07
我對AzureDirectory特定的東西沒有經驗,所以我不能告訴你爲什麼它會對Azure不好。如果合併係數較大,則合併次數會減少(以RAM使用爲代價),因此索引編制速度會更快,但搜索速度會更慢。 MergeFactor也控制索引中所允許的段的總數,這沒有很好的記錄。我在官方文檔中唯一可以找到的地方是:http://lucene.apache.org/core/old_versioned_docs/versions/3_0_1/api/core/org/apache/lucene/index/LogMergePolicy.html#getMergeFactor%28 %29 – 2013-03-27 20:53:26