我正在阅读MMapDirectoryFactory,以及如何将其设置为DirectoryFactory以用于我的核心solrconfig.xml中的索引。
<directoryFactory name="DirectoryFactory"
class="solr.MMapDirectoryFactory">
<bool name="preload">true</bool>
</directoryFactory>
我无法理解,也找不到任何关于如何设置maxChunkSize的示例。
参考:
- https://solr.apache.org/guide/8_5/datadir-and-directoryfactory-in-solrconfig.html-
- https://solr.apache.org/docs/8_5_0/solr-core/org/apache/solr/core/MMapDirectoryFactory.html
<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;
}
然而,也就是说,理想情况下,您不需要根据java文档为现代生产系统修改此参数(因为它们通常已经是64位了(。
为命名位置创建一个新的MMapDirectory,指定用于内存映射的最大块大小。如果目录还不存在,则会在命名位置创建该目录。特别是在32位平台上,地址空间可能非常分散,因此无法映射大型索引文件。使用较低的块大小会使目录实现稍微慢一点(因为正确的块可能会在大量查找中解析(,但mmap不会失败的几率更高在64位Java平台上,此参数应始终为1<lt;30,因为地址空间足够大