如何设置参数 - setRAMBufferSizeMB?取决于机器的RAM大小?或者需要索引的数据大小?还是其他任何参数?有人可以建议一种方法来决定setRAMBufferSizeMB的值。
答案 0 :(得分:0)
那么,我们对Lucene javadoc中的这个参数有什么看法:
确定可用于缓冲添加的RAM量 文档和删除在刷新到目录之前。 通常,为了获得更快的索引性能,最好通过RAM进行刷新 使用而不是文档计数,并使用像你一样大的RAM缓冲区 能够。设置此项后,只要缓冲,编写器就会刷新 文档和删除使用这么多RAM。
最大RAM限制本质上由可用的JVM决定 记忆。然而,IndexWriter会话可以消耗更多 内存量超过给定的RAM限制,因为此限制只是一个 指示何时将内存驻留文档刷新到目录。 其他线程添加时,可能会同时发生刷新 文件给作者。为了应用稳定性可用 JVM中的内存应远大于RAM缓冲区 用于索引。
默认情况下,Lucene使用16 Mb作为此参数(这是对我的指示,你不应该有那么大的参数来获得精确的索引速度)。我建议你通过将它设置为500 Mb并检查系统的运行情况来调整此参数。如果你有崩溃,你可以尝试一些较小的值,如200 Mb等,直到你的系统稳定。
是的,正如javadoc中所述,这个参数依赖于JVM堆,但是对于Python,我认为它可以没有任何限制地分配内存。