如何在solr中设置MMapDirectoryFactory的最大块大小?

lfapxunr  于 2022-11-05  发布在  Solr
关注(0)|答案(1)|浏览(178)

我正在阅读MMapDirectoryFactory,以及如何将其设置为DirectoryFactory,以用于我的核心的solrconfig.xml中的索引。

<directoryFactory name="DirectoryFactory"
                  class="solr.MMapDirectoryFactory">
  <bool name="preload">true</bool>
</directoryFactory>

我无法理解也无法找到任何关于如何设置maxChunkSize的示例。
参考文献:

u2nhd7ah

u2nhd7ah1#

<directoryFactory name="DirectoryFactory"
                      class="${solr.directoryFactory:solr.MMapDirectoryFactory}">
        <int name="maxChunkSize">1073741824</int>
        <bool name="preload">true</bool>
    </directoryFactory>

我希望你在找这个。
请注意,对块大小进行了验证。

public MMapDirectory(Path path, LockFactory lockFactory, int maxChunkSize) throws IOException {
    ...
    this.chunkSizePower = 31 - Integer.numberOfLeadingZeros(maxChunkSize);
    assert this.chunkSizePower >= 0 && this.chunkSizePower <= 30;
  }

然而,也就是说,在理想情况下,您不需要为现代生产系统(因为它们通常已经是64位的)修改每个java文档的参数。
为指定位置创建新的MMapDirectory,指定用于内存Map的最大块大小。如果指定位置不存在该目录,则在指定位置创建该目录。特别是在32位平台上,地址空间可能非常分散。因此无法Map较大的索引文件。使用较小的块大小会使目录实现速度稍慢(因为正确的块可能在多次查找时被解析),但是mmap不失败的可能性更高。在64位Java平台上,此参数应始终为1〈〈30,因为地址空间足够大。

相关问题