Package org.apache.lucene.index
Class SegmentMerger
- java.lang.Object
-
- org.apache.lucene.index.SegmentMerger
-
final class SegmentMerger extends java.lang.Object
The SegmentMerger class combines two or more Segments, represented by an IndexReader, into a single Segment. Call the merge method to combine the segments.- See Also:
merge()
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static interface
SegmentMerger.Merger
private static interface
SegmentMerger.VoidMerger
-
Field Summary
Fields Modifier and Type Field Description private Codec
codec
private IOContext
context
private Directory
directory
private FieldInfos.Builder
fieldInfosBuilder
(package private) MergeState
mergeState
-
Constructor Summary
Constructors Constructor Description SegmentMerger(java.util.List<CodecReader> readers, SegmentInfo segmentInfo, InfoStream infoStream, Directory dir, FieldInfos.FieldNumbers fieldNumbers, IOContext context)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) MergeState
merge()
Merges the readers into the directory passed to the constructorprivate void
mergeDocValues(SegmentWriteState segmentWriteState, SegmentReadState segmentReadState)
void
mergeFieldInfos()
private void
mergeFieldInfos(SegmentWriteState segmentWriteState, SegmentReadState segmentReadState)
private int
mergeFields()
Merge stored fields from each of the segments into the new one.private void
mergeNorms(SegmentWriteState segmentWriteState, SegmentReadState segmentReadState)
private void
mergePoints(SegmentWriteState segmentWriteState, SegmentReadState segmentReadState)
private void
mergeTerms(SegmentWriteState segmentWriteState, SegmentReadState segmentReadState)
private int
mergeTermVectors()
Merge the TermVectors from each of the segments into the new one.private void
mergeVectorValues(SegmentWriteState segmentWriteState, SegmentReadState segmentReadState)
private int
mergeWithLogging(SegmentMerger.Merger merger, java.lang.String formatName)
private void
mergeWithLogging(SegmentMerger.VoidMerger merger, SegmentWriteState segmentWriteState, SegmentReadState segmentReadState, java.lang.String formatName, int numMerged)
(package private) boolean
shouldMerge()
True if any merging should happen
-
-
-
Field Detail
-
directory
private final Directory directory
-
codec
private final Codec codec
-
context
private final IOContext context
-
mergeState
final MergeState mergeState
-
fieldInfosBuilder
private final FieldInfos.Builder fieldInfosBuilder
-
-
Constructor Detail
-
SegmentMerger
SegmentMerger(java.util.List<CodecReader> readers, SegmentInfo segmentInfo, InfoStream infoStream, Directory dir, FieldInfos.FieldNumbers fieldNumbers, IOContext context) throws java.io.IOException
- Throws:
java.io.IOException
-
-
Method Detail
-
shouldMerge
boolean shouldMerge()
True if any merging should happen
-
merge
MergeState merge() throws java.io.IOException
Merges the readers into the directory passed to the constructor- Returns:
- The number of documents that were merged
- Throws:
CorruptIndexException
- if the index is corruptjava.io.IOException
- if there is a low-level IO error
-
mergeFieldInfos
private void mergeFieldInfos(SegmentWriteState segmentWriteState, SegmentReadState segmentReadState) throws java.io.IOException
- Throws:
java.io.IOException
-
mergeDocValues
private void mergeDocValues(SegmentWriteState segmentWriteState, SegmentReadState segmentReadState) throws java.io.IOException
- Throws:
java.io.IOException
-
mergePoints
private void mergePoints(SegmentWriteState segmentWriteState, SegmentReadState segmentReadState) throws java.io.IOException
- Throws:
java.io.IOException
-
mergeNorms
private void mergeNorms(SegmentWriteState segmentWriteState, SegmentReadState segmentReadState) throws java.io.IOException
- Throws:
java.io.IOException
-
mergeTerms
private void mergeTerms(SegmentWriteState segmentWriteState, SegmentReadState segmentReadState) throws java.io.IOException
- Throws:
java.io.IOException
-
mergeFieldInfos
public void mergeFieldInfos()
-
mergeFields
private int mergeFields() throws java.io.IOException
Merge stored fields from each of the segments into the new one.- Returns:
- The number of documents in all of the readers
- Throws:
CorruptIndexException
- if the index is corruptjava.io.IOException
- if there is a low-level IO error
-
mergeTermVectors
private int mergeTermVectors() throws java.io.IOException
Merge the TermVectors from each of the segments into the new one.- Throws:
java.io.IOException
- if there is a low-level IO error
-
mergeVectorValues
private void mergeVectorValues(SegmentWriteState segmentWriteState, SegmentReadState segmentReadState) throws java.io.IOException
- Throws:
java.io.IOException
-
mergeWithLogging
private int mergeWithLogging(SegmentMerger.Merger merger, java.lang.String formatName) throws java.io.IOException
- Throws:
java.io.IOException
-
mergeWithLogging
private void mergeWithLogging(SegmentMerger.VoidMerger merger, SegmentWriteState segmentWriteState, SegmentReadState segmentReadState, java.lang.String formatName, int numMerged) throws java.io.IOException
- Throws:
java.io.IOException
-
-