package com.xiaomi.linden.lucene.merge; import java.io.IOException; import java.util.Map; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.MergeTrigger; import org.apache.lucene.index.SegmentCommitInfo; import org.apache.lucene.index.SegmentInfos; import org.apache.lucene.index.sorter.SortingMergePolicy; import org.apache.lucene.search.Sort; public class SortingMergePolicyDecorator extends MergePolicy { private SortingMergePolicy sortingMergePolicy; private Sort sort; public SortingMergePolicyDecorator(MergePolicy in, Sort sort) { this.sortingMergePolicy = new SortingMergePolicy(in, sort); this.sort = sort; } @Override public MergeSpecification findMerges(MergeTrigger mergeTrigger, SegmentInfos segmentInfos, IndexWriter writer) throws IOException { return sortingMergePolicy.findMerges(mergeTrigger, segmentInfos, writer); } @Override public MergeSpecification findForcedMerges(SegmentInfos segmentInfos, int maxSegmentCount, Map<SegmentCommitInfo, Boolean> segmentsToMerge, IndexWriter writer) throws IOException { return sortingMergePolicy.findForcedMerges(segmentInfos, maxSegmentCount, segmentsToMerge, writer); } @Override public MergeSpecification findForcedDeletesMerges(SegmentInfos segmentInfos, IndexWriter writer) throws IOException { return sortingMergePolicy.findForcedDeletesMerges(segmentInfos, writer); } public Sort getSort() { return sort; } }