我想很好地理解 Solr 合并行为。我对不同的合并策略做了一些研究。而且似乎 TieredMergePolicy 比旧的合并策略(LogByteSizeMergePolicy 等)更好。这就是我使用这个的原因,这是最后一个 solr 版本的默认策略。
首先,我给你一些我读过的有趣的链接,以便更好地了解合并过程:http: //java.dzone.com/news/merge-policy-internals-solr http://blog.mikemccandless.com /2011/02/visualizing-lucenes-segment-merges.html
根据Lucene的官方文档,我想问几个问题: http: //lucene.apache.org/core/3_2_0/api/all/org/apache/lucene/index/TieredMergePolicy.html
问题
1- 在官方文档中,有一种方法叫做 setExpungeDeletesPctAllowed(double v)。而在 Solr 4.3.0 中,我检查了 TieredMergePolicy 类,我没有找到这个方法。还有另一种看起来像这样的方法,称为:setForceMergeDeletesPctAllowed(double v)。两种方法之间有什么区别吗?
2- 仅当您执行 ExpungeDelete 和优化时才调用上述两种方法,还是在正常合并时调用它们。
3-我读过,分段之间的合并是根据分段上已删除文档百分比的按比例完成的。默认情况下,此百分比设置为 10%。是否可以将此值设置为 0% 以确保合并后索引中不再有已删除的文档?
如果可能的话,我需要在不调用 optimize() 方法的情况下减小索引的大小。这就是为什么有关合并过程的任何信息对我来说都很有趣的原因。
谢谢