【问题标题】:Configuring Lucene Index writer, controlling the segment formation (setRAMBufferSizeMB)配置 Lucene Index writer,控制段形成 (setRAMBufferSizeMB)
【发布时间】:2017-09-18 15:16:29
【问题描述】:

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

【问题讨论】:

    标签: lucene lucene.net pylucene


    【解决方案1】:

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

    确定可用于缓冲添加的 RAM 量 在刷新到目录之前的文档和删除。 通常为了更快的索引性能,最好通过 RAM 刷新 使用而不是文档计数,并使用与您一样大的 RAM 缓冲区 能够。设置后,写入器将在缓冲时刷新 文档和删除使用这么多 RAM。

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

    默认情况下,Lucene 使用 16 Mb 作为这个参数(这是对我的暗示,你不应该有这么大的参数来获得良好的索引速度)。我建议您通过将其设置为 500 Mb 并检查您的系统表现如何来调整此参数。如果您将发生崩溃,您可以尝试一些较小的值,例如 200 Mb 等,直到您的系统稳定为止。

    是的,正如javadoc中所说,这个参数取决于JVM堆,但是对于Python,我认为它可以无限制地分配内存。

    【讨论】:

      猜你喜欢
      • 2014-09-30
      • 2016-12-13
      • 2011-09-18
      • 2012-07-10
      • 1970-01-01
      • 2019-10-31
      • 2013-09-05
      • 2016-10-05
      • 1970-01-01
      相关资源
      最近更新 更多