是否可以告诉Lucene按顺序编写固定大小的段?通过这种方式,我们将避免对大段重的合并。 Lucene具有类似功能的LogMergePolicy类,可以按文档计数或文件大小设置最大段大小,但它只是合并的限制。
答案 0 :(得分:0)
您可以使用NRTCachingDirectory在内存中进行小段合并,只有达到~256MiB左右时才将它们写入磁盘。
但从根本上说,合并是必要的,因为像FST这样的数据结构是一次写入的,并且通过创建一个新的来修改。
也许这可以与FilesystemDirectory的NoMergePolicy结合使用,它不会执行进一步的合并。但是这会有非常糟糕的查询性能。
也许手动合并并以某种方式将它们全部合并(通过设置TieredMergePolicy.setMaxMergeAtOnceExplicit())
但合并只是开展业务的成本,可能最好习惯它并将MergePolicy调整到您的工作负载。