|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.lucene.index.MergePolicy
public abstract class MergePolicy
Expert: a MergePolicy determines the sequence of primitive merge operations to be used for overall merge and optimize operations.
Whenever the segments in an index have been altered by
IndexWriter
, either the addition of a newly
flushed segment, addition of many segments from
addIndexes* calls, or a previous merge that may now need
to cascade, IndexWriter
invokes findMerges(org.apache.lucene.index.SegmentInfos)
to give the MergePolicy a chance to pick
merges that are now required. This method returns a
MergePolicy.MergeSpecification
instance describing the set of
merges that should be done, or null if no merges are
necessary. When IndexWriter.optimize is called, it calls
findMergesForOptimize(org.apache.lucene.index.SegmentInfos, int, java.util.Set)
and the MergePolicy should
then return the necessary merges.
Note that the policy can return more than one merge at
a time. In this case, if the writer is using SerialMergeScheduler
, the merges will be run
sequentially but if it is using ConcurrentMergeScheduler
they will be run concurrently.
The default MergePolicy is LogByteSizeMergePolicy
.
NOTE: This API is new and still experimental (subject to change suddenly in the next release)
NOTE: This class typically requires access to
package-private APIs (e.g. SegmentInfos
) to do its job;
if you implement your own MergePolicy, you'll need to put
it in package org.apache.lucene.index in order to use
these APIs.
Nested Class Summary | |
---|---|
static class |
MergePolicy.MergeAbortedException
|
static class |
MergePolicy.MergeException
Exception thrown if there are any problems while executing a merge. |
static class |
MergePolicy.MergeSpecification
A MergeSpecification instance provides the information necessary to perform multiple merges. |
static class |
MergePolicy.OneMerge
OneMerge provides the information necessary to perform an individual primitive merge operation, resulting in a single new segment. |
Field Summary | |
---|---|
protected IndexWriter |
writer
|
Constructor Summary | |
---|---|
MergePolicy(IndexWriter writer)
|
Method Summary | |
---|---|
abstract void |
close()
Release all resources for the policy. |
abstract MergePolicy.MergeSpecification |
findMerges(SegmentInfos segmentInfos)
Determine what set of merge operations are now necessary on the index. |
abstract MergePolicy.MergeSpecification |
findMergesForOptimize(SegmentInfos segmentInfos,
int maxSegmentCount,
Set segmentsToOptimize)
Determine what set of merge operations is necessary in order to optimize the index. |
abstract MergePolicy.MergeSpecification |
findMergesToExpungeDeletes(SegmentInfos segmentInfos)
Determine what set of merge operations is necessary in order to expunge all deletes from the index. |
abstract boolean |
useCompoundDocStore(SegmentInfos segments)
Returns true if the doc store files should use the compound file format. |
abstract boolean |
useCompoundFile(SegmentInfos segments,
SegmentInfo newSegment)
Returns true if a newly flushed (not from merge) segment should use the compound file format. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected final IndexWriter writer
Constructor Detail |
---|
public MergePolicy(IndexWriter writer)
Method Detail |
---|
public abstract MergePolicy.MergeSpecification findMerges(SegmentInfos segmentInfos) throws CorruptIndexException, IOException
IndexWriter
calls this whenever there is a change to the segments.
This call is always synchronized on the IndexWriter
instance so
only one thread at a time will call this method.
segmentInfos
- the total set of segments in the index
CorruptIndexException
IOException
public abstract MergePolicy.MergeSpecification findMergesForOptimize(SegmentInfos segmentInfos, int maxSegmentCount, Set segmentsToOptimize) throws CorruptIndexException, IOException
IndexWriter
calls this when its
IndexWriter.optimize()
method is called. This call is always
synchronized on the IndexWriter
instance so only one thread at a
time will call this method.
segmentInfos
- the total set of segments in the indexmaxSegmentCount
- requested maximum number of segments in the index (currently this
is always 1)segmentsToOptimize
- contains the specific SegmentInfo instances that must be merged
away. This may be a subset of all SegmentInfos.
CorruptIndexException
IOException
public abstract MergePolicy.MergeSpecification findMergesToExpungeDeletes(SegmentInfos segmentInfos) throws CorruptIndexException, IOException
segmentInfos
- the total set of segments in the index
CorruptIndexException
IOException
public abstract void close()
public abstract boolean useCompoundFile(SegmentInfos segments, SegmentInfo newSegment)
public abstract boolean useCompoundDocStore(SegmentInfos segments)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |