Package org.apache.lucene.misc.index
Class BPReorderingMergePolicy
- java.lang.Object
-
- org.apache.lucene.index.MergePolicy
-
- org.apache.lucene.index.FilterMergePolicy
-
- org.apache.lucene.misc.index.BPReorderingMergePolicy
-
- All Implemented Interfaces:
Unwrappable<MergePolicy>
public final class BPReorderingMergePolicy extends FilterMergePolicy
A merge policy that reorders merged segments according to aBPIndexReorderer
. When reordering doesn't have enough RAM, it simply skips reordering in order not to fail the merge. So make sure to give enough RAM to yourBPIndexReorderer
viaBPIndexReorderer.setRAMBudgetMB(double)
.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.lucene.index.MergePolicy
MergePolicy.MergeAbortedException, MergePolicy.MergeContext, MergePolicy.MergeException, MergePolicy.MergeSpecification, MergePolicy.OneMerge, MergePolicy.OneMergeProgress
-
-
Field Summary
-
Fields inherited from class org.apache.lucene.index.FilterMergePolicy
in
-
Fields inherited from class org.apache.lucene.index.MergePolicy
DEFAULT_MAX_CFS_SEGMENT_SIZE, DEFAULT_NO_CFS_RATIO, maxCFSSegmentSize, noCFSRatio
-
-
Constructor Summary
Constructors Constructor Description BPReorderingMergePolicy(MergePolicy in, BPIndexReorderer reorderer)
Sole constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description MergePolicy.MergeSpecification
findForcedDeletesMerges(SegmentInfos segmentInfos, MergePolicy.MergeContext mergeContext)
MergePolicy.MergeSpecification
findForcedMerges(SegmentInfos segmentInfos, int maxSegmentCount, Map<SegmentCommitInfo,Boolean> segmentsToMerge, MergePolicy.MergeContext mergeContext)
MergePolicy.MergeSpecification
findFullFlushMerges(MergeTrigger mergeTrigger, SegmentInfos segmentInfos, MergePolicy.MergeContext mergeContext)
MergePolicy.MergeSpecification
findMerges(CodecReader... readers)
MergePolicy.MergeSpecification
findMerges(MergeTrigger mergeTrigger, SegmentInfos segmentInfos, MergePolicy.MergeContext mergeContext)
void
setMinNaturalMergeNumDocs(int minNaturalMergeNumDocs)
Set the minimum number of docs that a merge must have for the resulting segment to be reordered.void
setMinNaturalMergeRatioFromBiggestSegment(float minNaturalMergeRatioFromBiggestSegment)
Set the minimum number of docs that a merge must have for the resulting segment to be reordered, as a ratio of the total number of documents of the current biggest segment in the index.-
Methods inherited from class org.apache.lucene.index.FilterMergePolicy
getMaxCFSSegmentSizeMB, getNoCFSRatio, keepFullyDeletedSegment, maxFullFlushMergeSize, numDeletesToMerge, setMaxCFSSegmentSizeMB, setNoCFSRatio, size, toString, unwrap, useCompoundFile
-
Methods inherited from class org.apache.lucene.index.MergePolicy
assertDelCount, isMerged, message, segString, verbose
-
-
-
-
Constructor Detail
-
BPReorderingMergePolicy
public BPReorderingMergePolicy(MergePolicy in, BPIndexReorderer reorderer)
Sole constructor. It takes the merge policy that should be used to compute merges, and will then reorder doc IDs from all merges above the configured minimum doc count, as well as all forced merges.If you wish to only run reordering upon forced merges, pass
Integer.MAX_VALUE
as aminNaturalMergeNumDocs
. Otherwise a default value of2^18 = 262,144
is suggested. This should help retain merging optimizations on small merges while reordering the larger segments that are important for good search performance.- Parameters:
in
- the merge policy to use to compute mergesreorderer
- theBPIndexReorderer
to use to renumber doc IDs
-
-
Method Detail
-
setMinNaturalMergeNumDocs
public void setMinNaturalMergeNumDocs(int minNaturalMergeNumDocs)
Set the minimum number of docs that a merge must have for the resulting segment to be reordered.
-
setMinNaturalMergeRatioFromBiggestSegment
public void setMinNaturalMergeRatioFromBiggestSegment(float minNaturalMergeRatioFromBiggestSegment)
Set the minimum number of docs that a merge must have for the resulting segment to be reordered, as a ratio of the total number of documents of the current biggest segment in the index. This parameter helps only enable reordering on segments that are large enough that they will significantly contribute to overall search performance.
-
findMerges
public MergePolicy.MergeSpecification findMerges(MergeTrigger mergeTrigger, SegmentInfos segmentInfos, MergePolicy.MergeContext mergeContext) throws IOException
- Overrides:
findMerges
in classFilterMergePolicy
- Throws:
IOException
-
findForcedMerges
public MergePolicy.MergeSpecification findForcedMerges(SegmentInfos segmentInfos, int maxSegmentCount, Map<SegmentCommitInfo,Boolean> segmentsToMerge, MergePolicy.MergeContext mergeContext) throws IOException
- Overrides:
findForcedMerges
in classFilterMergePolicy
- Throws:
IOException
-
findForcedDeletesMerges
public MergePolicy.MergeSpecification findForcedDeletesMerges(SegmentInfos segmentInfos, MergePolicy.MergeContext mergeContext) throws IOException
- Overrides:
findForcedDeletesMerges
in classFilterMergePolicy
- Throws:
IOException
-
findFullFlushMerges
public MergePolicy.MergeSpecification findFullFlushMerges(MergeTrigger mergeTrigger, SegmentInfos segmentInfos, MergePolicy.MergeContext mergeContext) throws IOException
- Overrides:
findFullFlushMerges
in classFilterMergePolicy
- Throws:
IOException
-
findMerges
public MergePolicy.MergeSpecification findMerges(CodecReader... readers) throws IOException
- Overrides:
findMerges
in classFilterMergePolicy
- Throws:
IOException
-
-