配置Lucene Index writer,控制段形成(setRAMBufferSizeMB)

时间:2017-09-18 15:16:29

标签: lucene lucene.net pylucene

如何设置参数 - setRAMBufferSizeMB?取决于机器的RAM大小?或者需要索引的数据大小?还是其他任何参数?有人可以建议一种方法来决定setRAMBufferSizeMB的值。

1 个答案:

答案 0 :(得分:0)

那么,我们对Lucene javadoc中的这个参数有什么看法:

  

确定可用于缓冲添加的RAM量   文档和删除在刷新到目录之前。   通常,为了获得更快的索引性能,最好通过RAM进行刷新   使用而不是文档计数,并使用像你一样大的RAM缓冲区   能够。设置此项后,只要缓冲,编写器就会刷新   文档和删除使用这么多RAM。

     

最大RAM限制本质上由可用的JVM决定   记忆。然而,IndexWriter会话可以消耗更多   内存量超过给定的RAM限制,因为此限制只是一个   指示何时将内存驻留文档刷新到目录。   其他线程添加时,可能会同时发生刷新   文件给作者。为了应用稳定性可用   JVM中的内存应远大于RAM缓冲区   用于索引。

默认情况下,Lucene使用16 Mb作为此参数(这是对我的指示,你不应该有那么大的参数来获得精确的索引速度)。我建议你通过将它设置为500 Mb并检查系统的运行情况来调整此参数。如果你有崩溃,你可以尝试一些较小的值,如200 Mb等,直到你的系统稳定。

是的,正如javadoc中所述,这个参数依赖于JVM堆,但是对于Python,我认为它可以没有任何限制地分配内存。