Lucene中的控制合并段
我想在Lucene中控制段合并。更准确地说,我有一个每段缓存,每次有一个合并,我想有一个“回调”,并检查哪个段将被合并 我查看了IndexWriter代码,看起来它是IndexWriter的内部操作。我也不想攻击IndexWriter。我看到一个名为MergeScheduler的接口。实现这个类的最佳方案是什么Lucene中的控制合并段,lucene,merge,segment,Lucene,Merge,Segment,我想在Lucene中控制段合并。更准确地说,我有一个每段缓存,每次有一个合并,我想有一个“回调”,并检查哪个段将被合并 我查看了IndexWriter代码,看起来它是IndexWriter的内部操作。我也不想攻击IndexWriter。我看到一个名为MergeScheduler的接口。实现这个类的最佳方案是什么 你知道怎么做吗?提前谢谢 也许您可以将正在使用的子类化(默认为TieredMergePolicy),并通过覆盖findMerges方法拦截要合并的段,如下所示 MergePolicy.M
你知道怎么做吗?提前谢谢 也许您可以将正在使用的子类化(默认为
TieredMergePolicy
),并通过覆盖findMerges
方法拦截要合并的段,如下所示
MergePolicy.MergeSpecification mergeSpecification = super.findMerges(segmentInfos);
// use information from mergeSpecifiation
return mergeSpecification;
问题是您需要获取OneMerge对象,这些对象具有受保护的字段(我不想攻击lucene)。
MergePolicy的segments
字段。OneMerge
是公共的——这不是您需要的唯一字段吗?MergePolicy.OneMerge
是公共的,但它的字段不是。那么,我如何才能找到合并的段呢?只有一种解决方法是脏解决方案及其MergeSpecification.segString
。您使用的是什么版本?这个API有很多变化,但是在段中和段中都是公共的。你说得对,我使用的是Lucene 3.0.3。我将尝试切换。非常感谢。