2014-12-13 58 views
0

我有一個2GB大小的數據庫。我正在使用Lucene索引技術來加快搜索速度。我發現一個問題,即當我用來將數據加載到內存中時,顯示一條錯誤消息,「內存不足; java堆大小」。 有沒有任何選項可以在不增加Java堆大小的情況下加載數據? 我正在使用2GB RAM。我還沒有找到解決這個問題的辦法。有沒有解決方法? 請幫助...如何使用Lucene處理大型數據庫?

回答

1

Lucene可以輕鬆索引和搜索超過200Gb的數據與少於10Gb的內存。

  1. 使用最新版本的Lucene。
  2. 經常提交索引。你必須在內存中保持無限制的變化,並且需要一些額外的內存來提交和合並段。
  3. 如果在合併時擊中了OOM,則調整內存消耗IndexWriterConfig.setRAMBufferSizeMB(double)及相關功能和檢查索引MergePolicy
  4. 避免爲大數據塊使用存儲的字段。對於DB索引,只有id足夠存儲。
  5. 使用合適的現場分析儀,術語詞典將盡可能小。

一些相關鏈接:

  1. Lucene's RAM usage for searching(舊,但仍實際)
  2. IndexWriterConfig.setRAMBufferSizeMB(double)
  3. MergePolicy