如何使用Lucene处理大型数据库?

时间:2014-12-13 17:05:18

标签: lucene

我有一个大小为2GB的数据库。我正在使用Lucene索引技术来加快搜索速度。我发现了一个问题,即当我以前将数据加载到内存中时,显示的错误信息是“内存不足; Java堆大小”。    是否有任何选项可以在不增加Java堆大小的情况下加载数据? 我使用的是2GB内存。我没有找到解决这个问题的方法。有什么解决方案吗? 请帮忙......

1 个答案:

答案 0 :(得分:1)

Lucene可以使用少于10Gb的内存轻松索引和搜索200Gb数据。

  1. 使用最新版本的Lucene。
  2. 经常提交索引。您必须在内存中保留未经修改的更改,并需要一些额外的内存来提交它并合并段。
  3. 通过IndexWriterConfig.setRAMBufferSizeMB(double)和相关函数调整内存消耗,如果在合并时点击OOM,则检查索引MergePolicy
  4. 避免将存储的字段用于大数据blob。对于DB索引,只有id才能存储。
  5. 使用适当的现场分析仪,术语词典尽可能小。
  6. 一些相关链接:

    1. Lucene's RAM usage for searching(旧的,但仍然是实际的)
    2. IndexWriterConfig.setRAMBufferSizeMB(double)
    3. MergePolicy