Package org.apache.lucene.index
Class MergePolicy.OneMerge
java.lang.Object
org.apache.lucene.index.MergePolicy.OneMerge
- Enclosing class:
MergePolicy
OneMerge provides the information necessary to perform an individual primitive merge operation,
resulting in a single new segment. The merge spec includes the subset of segments to be merged
as well as whether the new segment should use the compound file format.
- WARNING: This API is experimental and might change in incompatible ways in the next release.
-
Field Summary
FieldsModifier and TypeFieldDescriptionlongEstimated size in bytes of the merged segment.final List<SegmentCommitInfo> Segments to be merged. -
Constructor Summary
ConstructorsModifierConstructorDescriptionOneMerge(List<SegmentCommitInfo> segments) Sole constructor.OneMerge(CodecReader... codecReaders) Create a OneMerge directly from CodecReaders.protectedOneMerge(MergePolicy.OneMerge oneMerge) Constructor for wrapping. -
Method Summary
Modifier and TypeMethodDescriptionvoidChecks if merge has been aborted and throws a merge exception if so.Returns theSegmentCommitInfofor the merged segment, or null if it hasn't been set yet.Returns aMergePolicy.OneMergeProgressinstance for this merge, which provides statistics of the merge threads (run time vs.ReturnMergeInfodescribing this merge.booleanReturns true if this merge was or should be aborted.voidmergeFinished(boolean success, boolean segmentDropped) Called byIndexWriterafter the merge is done and all readers have been closed.voidCalled byIndexWriterafter the merge started and from the thread that will be executing the merge.reorder(CodecReader reader, Directory dir, Executor executor) Extend this method if you wish to renumber doc IDs.Returns a readable description of the current merge state.voidMarks this merge as aborted.voidExpert: Sets theSegmentCommitInfoof the merged segment.longReturns the total size in bytes of this merge.intReturns the total number of documents that are included with this merge.wrapForMerge(CodecReader reader) Wrap a reader prior to merging in order to add/remove fields or documents.
-
Field Details
-
estimatedMergeBytes
public volatile long estimatedMergeBytesEstimated size in bytes of the merged segment. -
segments
Segments to be merged.
-
-
Constructor Details
-
OneMerge
Sole constructor.- Parameters:
segments- List ofSegmentCommitInfos to be merged.
-
OneMerge
Create a OneMerge directly from CodecReaders. Used to merge incoming readers inIndexWriter.addIndexes(CodecReader...). This OneMerge works directly on readers and has an empty segments list.- Parameters:
codecReaders- Codec readers to merge
-
OneMerge
Constructor for wrapping.
-
-
Method Details
-
mergeInit
Called byIndexWriterafter the merge started and from the thread that will be executing the merge.- Throws:
IOException
-
mergeFinished
Called byIndexWriterafter the merge is done and all readers have been closed.- Parameters:
success- true iff the merge finished successfully i.e. was committedsegmentDropped- true iff the merged segment was dropped since it was fully deleted- Throws:
IOException
-
wrapForMerge
Wrap a reader prior to merging in order to add/remove fields or documents.NOTE: It is illegal to reorder doc IDs here, use
reorder(CodecReader,Directory,Executor)instead.- Throws:
IOException
-
reorder
public Sorter.DocMap reorder(CodecReader reader, Directory dir, Executor executor) throws IOException Extend this method if you wish to renumber doc IDs. This method will be called when index sorting is disabled on a merged view of theMergePolicy.OneMerge. Anullreturn value indicates that doc IDs should not be reordered.NOTE: Returning a non-null value here disables several optimizations and increases the merging overhead.
- Parameters:
reader- The reader to reorder.dir- TheDirectoryof the index, which may be used to create temporary files.executor- An executor that can be used to parallelize the reordering logic. May benullif no concurrency is supported.- Throws:
IOException- WARNING: This API is experimental and might change in incompatible ways in the next release.
-
setMergeInfo
Expert: Sets theSegmentCommitInfoof the merged segment. Allows sub-classes to e.g.add diagnosticproperties. -
getMergeInfo
Returns theSegmentCommitInfofor the merged segment, or null if it hasn't been set yet. -
segString
Returns a readable description of the current merge state. -
totalBytesSize
public long totalBytesSize()Returns the total size in bytes of this merge. Note that this does not indicate the size of the merged segment, but the input total size. This is only set once the merge is initialized by IndexWriter. -
totalNumDocs
public int totalNumDocs()Returns the total number of documents that are included with this merge. Note that this does not indicate the number of documents after the merge. -
getStoreMergeInfo
ReturnMergeInfodescribing this merge. -
isAborted
public boolean isAborted()Returns true if this merge was or should be aborted. -
setAborted
public void setAborted()Marks this merge as aborted. The merge thread should terminate at the soonest possible moment. -
checkAborted
Checks if merge has been aborted and throws a merge exception if so. -
getMergeProgress
Returns aMergePolicy.OneMergeProgressinstance for this merge, which provides statistics of the merge threads (run time vs. sleep time) if merging is throttled.
-