public class BalancedSegmentMergePolicy extends LogByteSizeMergePolicy
This is based on code from zoie, described in more detail at http://code.google.com/p/zoie/wiki/ZoieMergePolicy.
| Modifier and Type | Class and Description |
|---|---|
static class |
BalancedSegmentMergePolicy.MergePolicyParams
Specifies configuration parameters for BalancedSegmentMergePolicy.
|
MergePolicy.MergeAbortedException, MergePolicy.MergeException, MergePolicy.MergeSpecification, MergePolicy.OneMerge| Modifier and Type | Field and Description |
|---|---|
static int |
DEFAULT_NUM_LARGE_SEGMENTS |
DEFAULT_MAX_MERGE_MB, DEFAULT_MAX_MERGE_MB_FOR_FORCED_MERGE, DEFAULT_MIN_MERGE_MBcalibrateSizeByDeletes, DEFAULT_MAX_MERGE_DOCS, DEFAULT_MERGE_FACTOR, DEFAULT_NO_CFS_RATIO, LEVEL_LOG_SPAN, maxMergeDocs, maxMergeSize, maxMergeSizeForForcedMerge, mergeFactor, minMergeSize, noCFSRatio, useCompoundFilewriter| Constructor and Description |
|---|
BalancedSegmentMergePolicy() |
| Modifier and Type | Method and Description |
|---|---|
MergePolicy.MergeSpecification |
findForcedDeletesMerges(SegmentInfos infos)
Finds merges necessary to force-merge all deletes from the
index.
|
MergePolicy.MergeSpecification |
findForcedMerges(SegmentInfos infos,
int maxNumSegments,
Map<SegmentInfo,Boolean> segmentsToMerge)
Returns the merges necessary to merge the index down
to a specified number of segments.
|
MergePolicy.MergeSpecification |
findMerges(SegmentInfos infos)
Checks if any merges are now necessary and returns a
MergePolicy.MergeSpecification if so. |
int |
getMaxSmallSegments() |
int |
getNumLargeSegments() |
boolean |
getPartialExpunge() |
void |
setMaxSmallSegments(int maxSmallSegments) |
void |
setMergeFactor(int mergeFactor)
Determines how often segment indices are merged by
addDocument().
|
void |
setMergePolicyParams(BalancedSegmentMergePolicy.MergePolicyParams params) |
void |
setNumLargeSegments(int numLargeSegments) |
void |
setPartialExpunge(boolean doPartialExpunge) |
protected long |
size(SegmentInfo info) |
getMaxMergeMB, getMaxMergeMBForForcedMerge, getMaxMergeMBForOptimize, getMinMergeMB, setMaxMergeMB, setMaxMergeMBForForcedMerge, setMaxMergeMBForOptimize, setMinMergeMBclose, getCalibrateSizeByDeletes, getMaxMergeDocs, getMergeFactor, getNoCFSRatio, getUseCompoundFile, isMerged, isMerged, message, setCalibrateSizeByDeletes, setMaxMergeDocs, setNoCFSRatio, setUseCompoundFile, sizeBytes, sizeDocs, toString, useCompoundFile, verbosesetIndexWriterpublic static final int DEFAULT_NUM_LARGE_SEGMENTS
public void setMergePolicyParams(BalancedSegmentMergePolicy.MergePolicyParams params)
protected long size(SegmentInfo info) throws IOException
size in class LogByteSizeMergePolicyIOExceptionpublic void setPartialExpunge(boolean doPartialExpunge)
public boolean getPartialExpunge()
public void setNumLargeSegments(int numLargeSegments)
public int getNumLargeSegments()
public void setMaxSmallSegments(int maxSmallSegments)
public int getMaxSmallSegments()
public void setMergeFactor(int mergeFactor)
LogMergePolicysetMergeFactor in class LogMergePolicypublic MergePolicy.MergeSpecification findForcedMerges(SegmentInfos infos, int maxNumSegments, Map<SegmentInfo,Boolean> segmentsToMerge) throws IOException
LogMergePolicyLogMergePolicy.maxMergeSizeForForcedMerge setting.
By default, and assuming maxNumSegments=1, only
one segment will be left in the index, where that segment
has no deletions pending nor separate norms, and it is in
compound file format if the current useCompoundFile
setting is true. This method returns multiple merges
(mergeFactor at a time) so the MergeScheduler
in use may make use of concurrency.findForcedMerges in class LogMergePolicyinfos - the total set of segments in the indexmaxNumSegments - requested maximum number of segments in the index (currently this
is always 1)segmentsToMerge - contains the specific SegmentInfo instances that must be merged
away. This may be a subset of all
SegmentInfos. If the value is True for a
given SegmentInfo, that means this segment was
an original segment present in the
to-be-merged index; else, it was a segment
produced by a cascaded merge.IOExceptionpublic MergePolicy.MergeSpecification findForcedDeletesMerges(SegmentInfos infos) throws CorruptIndexException, IOException
LogMergePolicyfindForcedDeletesMerges in class LogMergePolicyinfos - the total set of segments in the indexCorruptIndexExceptionIOExceptionpublic MergePolicy.MergeSpecification findMerges(SegmentInfos infos) throws IOException
LogMergePolicyMergePolicy.MergeSpecification if so. A merge
is necessary when there are more than LogMergePolicy.setMergeFactor(int) segments at a given level. When
multiple levels have too many segments, this method
will return multiple merges, allowing the MergeScheduler to use concurrency.findMerges in class LogMergePolicyinfos - the total set of segments in the indexIOException