- All Implemented Interfaces:
Closeable
,AutoCloseable
DirectoryReader
.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static final class
Nested classes/interfaces inherited from class org.apache.lucene.index.IndexReader
IndexReader.CacheHelper, IndexReader.CacheKey, IndexReader.ClosedListener
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final boolean
private final IndexReader.CacheHelper
private final Set<IndexReader.ClosedListener>
(package private) final SegmentInfos
private final boolean
(package private) final IndexWriter
Fields inherited from class org.apache.lucene.index.DirectoryReader
directory
Fields inherited from class org.apache.lucene.index.BaseCompositeReader
subReadersSorter
-
Constructor Summary
ConstructorsConstructorDescriptionStandardDirectoryReader
(Directory directory, LeafReader[] readers, IndexWriter writer, SegmentInfos sis, Comparator<LeafReader> leafSorter, boolean applyAllDeletes, boolean writeAllDeletes) package private constructor, called only from static open() methods. -
Method Summary
Modifier and TypeMethodDescriptionprivate static void
decRefWhileHandlingException
(SegmentReader[] readers) protected void
doClose()
Implements close.private DirectoryReader
doOpenFromCommit
(IndexCommit commit) private DirectoryReader
doOpenFromWriter
(IndexCommit commit) protected DirectoryReader
Implement this method to supportDirectoryReader.openIfChanged(DirectoryReader)
.protected DirectoryReader
doOpenIfChanged
(IndexCommit commit) Implement this method to supportDirectoryReader.openIfChanged(DirectoryReader,IndexCommit)
.protected DirectoryReader
doOpenIfChanged
(IndexWriter writer, boolean applyAllDeletes) Implement this method to supportDirectoryReader.openIfChanged(DirectoryReader,IndexWriter,boolean)
.(package private) DirectoryReader
doOpenIfChanged
(SegmentInfos infos) private DirectoryReader
doOpenNoWriter
(IndexCommit commit) Expert: return the IndexCommit that this reader has opened.Optional method: Return aIndexReader.CacheHelper
that can be used to cache based on the content of this reader.Return theSegmentInfos
for this reader.long
Version number when this IndexReader was opened.boolean
Check whether any new changes have occurred to the index since this reader was opened.protected void
For test framework use only.(package private) static StandardDirectoryReader
open
(IndexWriter writer, IOFunction<SegmentCommitInfo, SegmentReader> readerFunction, SegmentInfos infos, boolean applyAllDeletes, boolean writeAllDeletes) Used by near real-time search(package private) static DirectoryReader
open
(Directory directory, int minSupportedMajorVersion, IndexCommit commit, Comparator<LeafReader> leafSorter) called from DirectoryReader.open(...) methods(package private) static DirectoryReader
open
(Directory directory, IndexCommit commit, Comparator<LeafReader> leafSorter) static DirectoryReader
open
(Directory directory, SegmentInfos infos, List<? extends LeafReader> oldReaders, Comparator<LeafReader> leafSorter) This constructor is only used fordoOpenIfChanged(SegmentInfos)
, as well as NRT replication.toString()
Methods inherited from class org.apache.lucene.index.DirectoryReader
directory, indexExists, listCommits, open, open, open, open, open, open, openIfChanged, openIfChanged, openIfChanged, openIfChanged
Methods inherited from class org.apache.lucene.index.BaseCompositeReader
docFreq, document, getDocCount, getSequentialSubReaders, getSumDocFreq, getSumTotalTermFreq, getTermVectors, maxDoc, numDocs, readerBase, readerIndex, storedFields, termVectors, totalTermFreq
Methods inherited from class org.apache.lucene.index.CompositeReader
getContext
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 Details
-
writer
-
segmentInfos
-
applyAllDeletes
private final boolean applyAllDeletes -
writeAllDeletes
private final boolean writeAllDeletes -
readerClosedListeners
-
cacheHelper
-
-
Constructor Details
-
StandardDirectoryReader
StandardDirectoryReader(Directory directory, LeafReader[] readers, IndexWriter writer, SegmentInfos sis, Comparator<LeafReader> leafSorter, boolean applyAllDeletes, boolean writeAllDeletes) throws IOException package private constructor, called only from static open() methods.- Throws:
IOException
-
-
Method Details
-
open
static DirectoryReader open(Directory directory, IndexCommit commit, Comparator<LeafReader> leafSorter) throws IOException - Throws:
IOException
-
open
static DirectoryReader open(Directory directory, int minSupportedMajorVersion, IndexCommit commit, Comparator<LeafReader> leafSorter) throws IOException called from DirectoryReader.open(...) methods- Throws:
IOException
-
open
static StandardDirectoryReader open(IndexWriter writer, IOFunction<SegmentCommitInfo, SegmentReader> readerFunction, SegmentInfos infos, boolean applyAllDeletes, boolean writeAllDeletes) throws IOExceptionUsed by near real-time search- Throws:
IOException
-
open
public static DirectoryReader open(Directory directory, SegmentInfos infos, List<? extends LeafReader> oldReaders, Comparator<LeafReader> leafSorter) throws IOException This constructor is only used fordoOpenIfChanged(SegmentInfos)
, as well as NRT replication.- Throws:
IOException
-
decRefWhileHandlingException
-
toString
- Overrides:
toString
in classCompositeReader
-
doOpenIfChanged
Description copied from class:DirectoryReader
Implement this method to supportDirectoryReader.openIfChanged(DirectoryReader)
. If this reader does not support reopen, returnnull
, so client code is happy. This should be consistent withDirectoryReader.isCurrent()
(should always returntrue
) if reopen is not supported.- Specified by:
doOpenIfChanged
in classDirectoryReader
- Returns:
- null if there are no changes; else, a new DirectoryReader instance.
- Throws:
IOException
- if there is a low-level IO error
-
doOpenIfChanged
Description copied from class:DirectoryReader
Implement this method to supportDirectoryReader.openIfChanged(DirectoryReader,IndexCommit)
. If this reader does not support reopen from a specificIndexCommit
, throwUnsupportedOperationException
.- Specified by:
doOpenIfChanged
in classDirectoryReader
- Returns:
- null if there are no changes; else, a new DirectoryReader instance.
- Throws:
IOException
- if there is a low-level IO error
-
doOpenIfChanged
protected DirectoryReader doOpenIfChanged(IndexWriter writer, boolean applyAllDeletes) throws IOException Description copied from class:DirectoryReader
Implement this method to supportDirectoryReader.openIfChanged(DirectoryReader,IndexWriter,boolean)
. If this reader does not support reopen fromIndexWriter
, throwUnsupportedOperationException
.- Specified by:
doOpenIfChanged
in classDirectoryReader
- Returns:
- null if there are no changes; else, a new DirectoryReader instance.
- Throws:
IOException
- if there is a low-level IO error
-
doOpenFromWriter
- Throws:
IOException
-
doOpenNoWriter
- Throws:
IOException
-
doOpenFromCommit
- Throws:
IOException
-
doOpenIfChanged
- Throws:
IOException
-
getVersion
public long getVersion()Description copied from class:DirectoryReader
Version number when this IndexReader was opened.This method returns the version recorded in the commit that the reader opened. This version is advanced every time a change is made with
IndexWriter
.- Specified by:
getVersion
in classDirectoryReader
-
getSegmentInfos
Return theSegmentInfos
for this reader. -
isCurrent
Description copied from class:DirectoryReader
Check whether any new changes have occurred to the index since this reader was opened.If this reader was created by calling
DirectoryReader.open(org.apache.lucene.store.Directory)
, then this method checks if any further commits (seeIndexWriter.commit()
) have occurred in the directory.If instead this reader is a near real-time reader (ie, obtained by a call to
DirectoryReader.open(IndexWriter)
, or by callingDirectoryReader.openIfChanged(org.apache.lucene.index.DirectoryReader)
on a near real-time reader), then this method checks if either a new commit has occurred, or any new uncommitted changes have taken place via the writer. Note that even if the writer has only performed merging, this method will still return false.In any event, if this returns false, you should call
DirectoryReader.openIfChanged(org.apache.lucene.index.DirectoryReader)
to get a new reader that sees the changes.- Specified by:
isCurrent
in classDirectoryReader
- Throws:
IOException
- if there is a low-level IO error
-
doClose
Description copied from class:IndexReader
Implements close.- Specified by:
doClose
in classIndexReader
- Throws:
IOException
-
getIndexCommit
Description copied from class:DirectoryReader
Expert: return the IndexCommit that this reader has opened.- Specified by:
getIndexCommit
in classDirectoryReader
- Throws:
IOException
-
notifyReaderClosedListeners
Description copied from class:IndexReader
For test framework use only.- Overrides:
notifyReaderClosedListeners
in classIndexReader
- Throws:
IOException
-
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
-