我想在Lucene上控制段合并。更确切地说,我有一个每段缓存,每次合并时我想要一个“回调”并检查哪个段将被合并。
我查看了IndexWriter代码,看起来像是索引编写器的内部操作。我也不想破解IndexWriter。我看到一个名为MergeScheduler的界面。实现这个类是最好的主意吗?
你知道怎么做吗?提前谢谢!
答案 0 :(得分:1)
也许您可以继承您正在使用的MergePolicy
(默认值为TieredMergePolicy
)并通过覆盖findMerges
方法拦截要合并的段?
MergePolicy.MergeSpecification mergeSpecification = super.findMerges(segmentInfos);
// use information from mergeSpecifiation
return mergeSpecification;