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) SegmentCoreReaders
core
private 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.(package private) DocValuesProducer
docValuesProducer
(package private) FieldInfos
fieldInfos
private Bits
hardLiveDocs
(package private) boolean
isNRT
True if we are holding RAM only liveDocs or DV updates, i.e.private Bits
liveDocs
private LeafMetaData
metaData
private int
numDocs
private SegmentCommitInfo
originalSi
private IndexReader.CacheHelper
readerCacheHelper
private java.util.Set<IndexReader.ClosedListener>
readerClosedListeners
(package private) SegmentDocValues
segDocValues
private SegmentCommitInfo
si
-
Constructor Summary
Constructors Constructor Description SegmentReader(SegmentCommitInfo si, int createdVersionMajor, boolean openedFromWriter, IOContext context, java.util.Map<java.lang.String,java.lang.String> readerAttributes)
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 boolean
assertLiveDocs(boolean isNRT, Bits hardLiveDocs, Bits liveDocs)
Directory
directory()
Returns the directory this index resides in.protected void
doClose()
Implements close.IndexReader.CacheHelper
getCoreCacheHelper()
Optional method: Return aIndexReader.CacheHelper
that can be used to cache based on the content of this leaf regardless of deletions.DocValuesProducer
getDocValuesReader()
Expert: retrieve underlying DocValuesProducerFieldInfos
getFieldInfos()
Get theFieldInfos
describing all fields in this reader.StoredFieldsReader
getFieldsReader()
Expert: retrieve thread-private StoredFieldsReaderBits
getHardLiveDocs()
Returns the live docs that are not hard-deleted.Bits
getLiveDocs()
Returns theBits
representing live (not deleted) docs.LeafMetaData
getMetaData()
Return metadata about this leaf.NormsProducer
getNormsReader()
Expert: retrieve underlying NormsProducer(package private) SegmentCommitInfo
getOriginalSegmentInfo()
Returns the original SegmentInfo passed to the segment reader on creation time.PointsReader
getPointsReader()
Expert: retrieve underlying PointsReaderFieldsProducer
getPostingsReader()
Expert: retrieve underlying FieldsProducerIndexReader.CacheHelper
getReaderCacheHelper()
Optional method: Return aIndexReader.CacheHelper
that can be used to cache based on the content of this reader.SegmentCommitInfo
getSegmentInfo()
Return the SegmentInfoPerCommit of the segment this reader is reading.java.lang.String
getSegmentName()
Return the name of the segment this reader is reading.TermVectorsReader
getTermVectorsReader()
Expert: retrieve thread-private TermVectorsReaderprivate DocValuesProducer
initDocValuesProducer()
init most recent DocValues for the current commitprivate FieldInfos
initFieldInfos()
init most recent FieldInfos for the current commitint
maxDoc()
Returns one greater than the largest possible document number.(package private) void
notifyReaderClosedListeners()
int
numDocs()
Returns the number of documents in this index.java.lang.String
toString()
-
Methods inherited from class org.apache.lucene.index.CodecReader
checkIntegrity, 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, boolean openedFromWriter, IOContext context, java.util.Map<java.lang.String,java.lang.String> readerAttributes) 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:LeafReader
Returns theBits
representing 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:
getLiveDocs
in classLeafReader
-
doClose
protected void doClose() throws java.io.IOException
Description copied from class:IndexReader
Implements close.- Overrides:
doClose
in classCodecReader
- Throws:
java.io.IOException
-
getFieldInfos
public FieldInfos getFieldInfos()
Description copied from class:LeafReader
Get theFieldInfos
describing 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:
getFieldInfos
in classLeafReader
-
numDocs
public int numDocs()
Description copied from class:IndexReader
Returns 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:
numDocs
in classIndexReader
-
maxDoc
public int maxDoc()
Description copied from class:IndexReader
Returns 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:
maxDoc
in classIndexReader
-
getTermVectorsReader
public TermVectorsReader getTermVectorsReader()
Description copied from class:CodecReader
Expert: retrieve thread-private TermVectorsReader- Specified by:
getTermVectorsReader
in classCodecReader
-
getFieldsReader
public StoredFieldsReader getFieldsReader()
Description copied from class:CodecReader
Expert: retrieve thread-private StoredFieldsReader- Specified by:
getFieldsReader
in classCodecReader
-
getPointsReader
public PointsReader getPointsReader()
Description copied from class:CodecReader
Expert: retrieve underlying PointsReader- Specified by:
getPointsReader
in classCodecReader
-
getNormsReader
public NormsProducer getNormsReader()
Description copied from class:CodecReader
Expert: retrieve underlying NormsProducer- Specified by:
getNormsReader
in classCodecReader
-
getDocValuesReader
public DocValuesProducer getDocValuesReader()
Description copied from class:CodecReader
Expert: retrieve underlying DocValuesProducer- Specified by:
getDocValuesReader
in classCodecReader
-
getPostingsReader
public FieldsProducer getPostingsReader()
Description copied from class:CodecReader
Expert: retrieve underlying FieldsProducer- Specified by:
getPostingsReader
in classCodecReader
-
toString
public java.lang.String toString()
- Overrides:
toString
in 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:
notifyReaderClosedListeners
in classIndexReader
- Throws:
java.io.IOException
-
getReaderCacheHelper
public IndexReader.CacheHelper getReaderCacheHelper()
Description copied from class:IndexReader
Optional method: Return aIndexReader.CacheHelper
that 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
null
indicates 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:
getReaderCacheHelper
in classIndexReader
-
getCoreCacheHelper
public IndexReader.CacheHelper getCoreCacheHelper()
Description copied from class:LeafReader
Optional method: Return aIndexReader.CacheHelper
that 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
null
indicates 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:
getCoreCacheHelper
in classLeafReader
-
getMetaData
public LeafMetaData getMetaData()
Description copied from class:LeafReader
Return metadata about this leaf.- Specified by:
getMetaData
in 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.
-
-