java.lang.Object | |
↳ | org.apache.lucene.index.MergePolicy |
Known Direct Subclasses |
Known Indirect Subclasses |
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(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(SegmentInfos, int, 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 Classes | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
MergePolicy.MergeAbortedException | |||||||||||
MergePolicy.MergeException | Exception thrown if there are any problems while executing a merge. | ||||||||||
MergePolicy.MergeSpecification | A MergeSpecification instance provides the information necessary to perform multiple merges. | ||||||||||
MergePolicy.OneMerge | OneMerge provides the information necessary to perform an individual primitive merge operation, resulting in a single new segment. |
Fields | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
writer |
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Release all resources for the policy.
| |||||||||||
Determine what set of merge operations are now necessary on the index.
| |||||||||||
Determine what set of merge operations is necessary in order to optimize
the index.
| |||||||||||
Determine what set of merge operations is necessary in order to expunge all
deletes from the index.
| |||||||||||
Returns true if the doc store files should use the
compound file format.
| |||||||||||
Returns true if a newly flushed (not from merge)
segment should use the compound file format.
|
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
java.lang.Object
| |||||||||||
From interface
java.io.Closeable
|
Release all resources for the policy.
Determine what set of merge operations are now necessary on the index.
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 |
Determine what set of merge operations is necessary in order to optimize
the index. IndexWriter
calls this when its
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 index |
---|---|
maxSegmentCount | 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 |
Determine what set of merge operations is necessary in order to expunge all deletes from the index.
segmentInfos | the total set of segments in the index |
---|
CorruptIndexException | |
---|---|
IOException |
Returns true if the doc store files should use the compound file format.
Returns true if a newly flushed (not from merge) segment should use the compound file format.