2014-12-13 54 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