Package org.apache.lucene.index
Class SegmentReader
- java.lang.Object
-
- org.apache.lucene.index.IndexReader
-
- org.apache.lucene.index.LeafReader
-
- org.apache.lucene.index.CodecReader
-
- org.apache.lucene.index.SegmentReader
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable,Accountable
public final class SegmentReader extends CodecReader
IndexReader implementation over a single segment.Instances pointing to the same segment (but with different deletes, etc) may share the same core data.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.lucene.index.IndexReader
IndexReader.CacheHelper, IndexReader.CacheKey, IndexReader.ClosedListener
-
-
Field Summary
Fields Modifier and Type Field Description (package private) SegmentCoreReaderscoreprivate IndexReader.CacheHelpercoreCacheHelperWrap the cache helper of the core to add ensureOpen() calls that make sure users do not register closed listeners on closed indices.(package private) DocValuesProducerdocValuesProducer(package private) FieldInfosfieldInfosprivate BitshardLiveDocs(package private) booleanisNRTTrue if we are holding RAM only liveDocs or DV updates, i.e.private BitsliveDocsprivate LeafMetaDatametaDataprivate intnumDocsprivate SegmentCommitInfooriginalSiprivate IndexReader.CacheHelperreaderCacheHelperprivate java.util.Set<IndexReader.ClosedListener>readerClosedListeners(package private) SegmentDocValuessegDocValuesprivate SegmentCommitInfosi-
Fields inherited from interface org.apache.lucene.util.Accountable
NULL_ACCOUNTABLE
-
-
Constructor Summary
Constructors Constructor Description SegmentReader(SegmentCommitInfo si, int createdVersionMajor, IOContext context)Constructs a new SegmentReader with a new core.SegmentReader(SegmentCommitInfo si, SegmentReader sr, Bits liveDocs, Bits hardLiveDocs, int numDocs, boolean isNRT)Create new SegmentReader sharing core from a previous SegmentReader and using the provided liveDocs, and recording whether those liveDocs were carried in ram (isNRT=true).
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static booleanassertLiveDocs(boolean isNRT, Bits hardLiveDocs, Bits liveDocs)voidcheckIntegrity()Checks consistency of this reader.Directorydirectory()Returns the directory this index resides in.protected voiddoClose()Implements close.IndexReader.CacheHelpergetCoreCacheHelper()Optional method: Return aIndexReader.CacheHelperthat can be used to cache based on the content of this leaf regardless of deletions.DocValuesProducergetDocValuesReader()Expert: retrieve underlying DocValuesProducerFieldInfosgetFieldInfos()Get theFieldInfosdescribing all fields in this reader.StoredFieldsReadergetFieldsReader()Expert: retrieve thread-private StoredFieldsReaderBitsgetHardLiveDocs()Returns the live docs that are not hard-deleted.BitsgetLiveDocs()Returns theBitsrepresenting live (not deleted) docs.LeafMetaDatagetMetaData()Return metadata about this leaf.NormsProducergetNormsReader()Expert: retrieve underlying NormsProducer(package private) SegmentCommitInfogetOriginalSegmentInfo()Returns the original SegmentInfo passed to the segment reader on creation time.PointsReadergetPointsReader()Expert: retrieve underlying PointsReaderFieldsProducergetPostingsReader()Expert: retrieve underlying FieldsProducerIndexReader.CacheHelpergetReaderCacheHelper()Optional method: Return aIndexReader.CacheHelperthat can be used to cache based on the content of this reader.SegmentCommitInfogetSegmentInfo()Return the SegmentInfoPerCommit of the segment this reader is reading.java.lang.StringgetSegmentName()Return the name of the segment this reader is reading.TermVectorsReadergetTermVectorsReader()Expert: retrieve thread-private TermVectorsReaderprivate DocValuesProducerinitDocValuesProducer()init most recent DocValues for the current commitprivate FieldInfosinitFieldInfos()init most recent FieldInfos for the current commitintmaxDoc()Returns one greater than the largest possible document number.(package private) voidnotifyReaderClosedListeners()intnumDocs()Returns the number of documents in this index.java.lang.StringtoString()-
Methods inherited from class org.apache.lucene.index.CodecReader
document, getBinaryDocValues, getChildResources, getNormValues, getNumericDocValues, getPointValues, getSortedDocValues, getSortedNumericDocValues, getSortedSetDocValues, getTermVectors, ramBytesUsed, terms
-
Methods inherited from class org.apache.lucene.index.LeafReader
docFreq, getContext, getDocCount, getSumDocFreq, getSumTotalTermFreq, postings, postings, totalTermFreq
-
Methods inherited from class org.apache.lucene.index.IndexReader
close, decRef, document, document, ensureOpen, equals, getRefCount, getTermVector, hasDeletions, hashCode, incRef, leaves, numDeletedDocs, registerParentReader, tryIncRef
-
-
-
-
Field Detail
-
si
private final SegmentCommitInfo si
-
originalSi
private final SegmentCommitInfo originalSi
-
metaData
private final LeafMetaData metaData
-
liveDocs
private final Bits liveDocs
-
hardLiveDocs
private final Bits hardLiveDocs
-
numDocs
private final int numDocs
-
core
final SegmentCoreReaders core
-
segDocValues
final SegmentDocValues segDocValues
-
isNRT
final boolean isNRT
True if we are holding RAM only liveDocs or DV updates, i.e. the SegmentCommitInfo delGen doesn't match our liveDocs.
-
docValuesProducer
final DocValuesProducer docValuesProducer
-
fieldInfos
final FieldInfos fieldInfos
-
readerClosedListeners
private final java.util.Set<IndexReader.ClosedListener> readerClosedListeners
-
readerCacheHelper
private final IndexReader.CacheHelper readerCacheHelper
-
coreCacheHelper
private final IndexReader.CacheHelper coreCacheHelper
Wrap the cache helper of the core to add ensureOpen() calls that make sure users do not register closed listeners on closed indices.
-
-
Constructor Detail
-
SegmentReader
SegmentReader(SegmentCommitInfo si, int createdVersionMajor, IOContext context) throws java.io.IOException
Constructs a new SegmentReader with a new core.- Throws:
CorruptIndexException- if the index is corruptjava.io.IOException- if there is a low-level IO error
-
SegmentReader
SegmentReader(SegmentCommitInfo si, SegmentReader sr, Bits liveDocs, Bits hardLiveDocs, int numDocs, boolean isNRT) throws java.io.IOException
Create new SegmentReader sharing core from a previous SegmentReader and using the provided liveDocs, and recording whether those liveDocs were carried in ram (isNRT=true).- Throws:
java.io.IOException
-
-
Method Detail
-
assertLiveDocs
private static boolean assertLiveDocs(boolean isNRT, Bits hardLiveDocs, Bits liveDocs)
-
initDocValuesProducer
private DocValuesProducer initDocValuesProducer() throws java.io.IOException
init most recent DocValues for the current commit- Throws:
java.io.IOException
-
initFieldInfos
private FieldInfos initFieldInfos() throws java.io.IOException
init most recent FieldInfos for the current commit- Throws:
java.io.IOException
-
getLiveDocs
public Bits getLiveDocs()
Description copied from class:LeafReaderReturns theBitsrepresenting live (not deleted) docs. A set bit indicates the doc ID has not been deleted. If this method returns null it means there are no deleted documents (all documents are live). The returned instance has been safely published for use by multiple threads without additional synchronization.- Specified by:
getLiveDocsin classLeafReader
-
doClose
protected void doClose() throws java.io.IOExceptionDescription copied from class:IndexReaderImplements close.- Overrides:
doClosein classCodecReader- Throws:
java.io.IOException
-
getFieldInfos
public FieldInfos getFieldInfos()
Description copied from class:LeafReaderGet theFieldInfosdescribing all fields in this reader. Note: Implementations should cache the FieldInfos instance returned by this method such that subsequent calls to this method return the same instance.- Specified by:
getFieldInfosin classLeafReader
-
numDocs
public int numDocs()
Description copied from class:IndexReaderReturns the number of documents in this index.NOTE: This operation may run in O(maxDoc). Implementations that can't return this number in constant-time should cache it.
- Specified by:
numDocsin classIndexReader
-
maxDoc
public int maxDoc()
Description copied from class:IndexReaderReturns one greater than the largest possible document number. This may be used to, e.g., determine how big to allocate an array which will have an element for every document number in an index.- Specified by:
maxDocin classIndexReader
-
getTermVectorsReader
public TermVectorsReader getTermVectorsReader()
Description copied from class:CodecReaderExpert: retrieve thread-private TermVectorsReader- Specified by:
getTermVectorsReaderin classCodecReader
-
getFieldsReader
public StoredFieldsReader getFieldsReader()
Description copied from class:CodecReaderExpert: retrieve thread-private StoredFieldsReader- Specified by:
getFieldsReaderin classCodecReader
-
getPointsReader
public PointsReader getPointsReader()
Description copied from class:CodecReaderExpert: retrieve underlying PointsReader- Specified by:
getPointsReaderin classCodecReader
-
getNormsReader
public NormsProducer getNormsReader()
Description copied from class:CodecReaderExpert: retrieve underlying NormsProducer- Specified by:
getNormsReaderin classCodecReader
-
getDocValuesReader
public DocValuesProducer getDocValuesReader()
Description copied from class:CodecReaderExpert: retrieve underlying DocValuesProducer- Specified by:
getDocValuesReaderin classCodecReader
-
getPostingsReader
public FieldsProducer getPostingsReader()
Description copied from class:CodecReaderExpert: retrieve underlying FieldsProducer- Specified by:
getPostingsReaderin classCodecReader
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
getSegmentName
public java.lang.String getSegmentName()
Return the name of the segment this reader is reading.
-
getSegmentInfo
public SegmentCommitInfo getSegmentInfo()
Return the SegmentInfoPerCommit of the segment this reader is reading.
-
directory
public Directory directory()
Returns the directory this index resides in.
-
notifyReaderClosedListeners
void notifyReaderClosedListeners() throws java.io.IOException- Overrides:
notifyReaderClosedListenersin classIndexReader- Throws:
java.io.IOException
-
getReaderCacheHelper
public IndexReader.CacheHelper getReaderCacheHelper()
Description copied from class:IndexReaderOptional method: Return aIndexReader.CacheHelperthat can be used to cache based on the content of this reader. Two readers that have different data or different sets of deleted documents will be considered different.A return value of
nullindicates that this reader is not suited for caching, which is typically the case for short-lived wrappers that alter the content of the wrapped reader.- Specified by:
getReaderCacheHelperin classIndexReader
-
getCoreCacheHelper
public IndexReader.CacheHelper getCoreCacheHelper()
Description copied from class:LeafReaderOptional method: Return aIndexReader.CacheHelperthat can be used to cache based on the content of this leaf regardless of deletions. Two readers that have the same data but different sets of deleted documents or doc values updates may be considered equal. Consider usingIndexReader.getReaderCacheHelper()if you need deletions or dv updates to be taken into account.A return value of
nullindicates that this reader is not suited for caching, which is typically the case for short-lived wrappers that alter the content of the wrapped leaf reader.- Specified by:
getCoreCacheHelperin classLeafReader
-
getMetaData
public LeafMetaData getMetaData()
Description copied from class:LeafReaderReturn metadata about this leaf.- Specified by:
getMetaDatain classLeafReader
-
getOriginalSegmentInfo
SegmentCommitInfo getOriginalSegmentInfo()
Returns the original SegmentInfo passed to the segment reader on creation time.getSegmentInfo()returns a clone of this instance.
-
getHardLiveDocs
public Bits getHardLiveDocs()
Returns the live docs that are not hard-deleted. This is an expert API to be used with soft-deletes to filter out document that hard deleted for instance due to aborted documents or to distinguish soft and hard deleted documents ie. a rolled back tombstone.
-
checkIntegrity
public void checkIntegrity() throws java.io.IOExceptionDescription copied from class:LeafReaderChecks consistency of this reader.Note that this may be costly in terms of I/O, e.g. may involve computing a checksum value against large data files.
- Overrides:
checkIntegrityin classCodecReader- Throws:
java.io.IOException
-
-