Class FilterDirectoryReader
- All Implemented Interfaces:
Closeable
,AutoCloseable
- Direct Known Subclasses:
ExitableDirectoryReader
,SoftDeletesDirectoryReaderWrapper
Subclasses should implement doWrapDirectoryReader to return an instance of the subclass.
If the subclass wants to wrap the DirectoryReader's subreaders, it should also implement a SubReaderWrapper subclass, and pass an instance to its super constructor.
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected static class
A DelegatingCacheHelper is a CacheHelper specialization for implementing long-lived caching behaviour for FilterDirectoryReader subclasses.static class
Factory class passed to FilterDirectoryReader constructor that allows subclasses to wrap the filtered DirectoryReader's subreaders.Nested classes/interfaces inherited from class org.apache.lucene.index.IndexReader
IndexReader.CacheHelper, IndexReader.CacheKey, IndexReader.ClosedListener
-
Field Summary
Fields inherited from class org.apache.lucene.index.DirectoryReader
directory
Fields inherited from class org.apache.lucene.index.BaseCompositeReader
subReadersSorter
-
Constructor Summary
ConstructorDescriptionCreate a new FilterDirectoryReader that filters a passed in DirectoryReader, using the supplied SubReaderWrapper to wrap its subreader. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
doClose()
Implements close.protected final DirectoryReader
Implement this method to supportDirectoryReader.openIfChanged(DirectoryReader)
.protected final DirectoryReader
doOpenIfChanged
(IndexCommit commit) Implement this method to supportDirectoryReader.openIfChanged(DirectoryReader,IndexCommit)
.protected final DirectoryReader
doOpenIfChanged
(IndexWriter writer, boolean applyAllDeletes) Implement this method to supportDirectoryReader.openIfChanged(DirectoryReader,IndexWriter,boolean)
.protected abstract DirectoryReader
Called by the doOpenIfChanged() methods to return a new wrapped DirectoryReader.Returns the wrappedDirectoryReader
.Expert: return the IndexCommit that this reader has opened.long
Version number when this IndexReader was opened.boolean
Check whether any new changes have occurred to the index since this reader was opened.static DirectoryReader
unwrap
(DirectoryReader reader) Get the wrapped instance byreader
as long as this reader is an instance ofFilterDirectoryReader
.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, totalTermFreq
Methods inherited from class org.apache.lucene.index.CompositeReader
getContext, toString
Methods inherited from class org.apache.lucene.index.IndexReader
close, decRef, document, document, ensureOpen, equals, getReaderCacheHelper, getRefCount, getTermVector, hasDeletions, hashCode, incRef, leaves, notifyReaderClosedListeners, numDeletedDocs, registerParentReader, tryIncRef
-
Field Details
-
in
The filtered DirectoryReader
-
-
Constructor Details
-
FilterDirectoryReader
public FilterDirectoryReader(DirectoryReader in, FilterDirectoryReader.SubReaderWrapper wrapper) throws IOException Create a new FilterDirectoryReader that filters a passed in DirectoryReader, using the supplied SubReaderWrapper to wrap its subreader.- Parameters:
in
- the DirectoryReader to filterwrapper
- the SubReaderWrapper to use to wrap subreaders- Throws:
IOException
-
-
Method Details
-
unwrap
Get the wrapped instance byreader
as long as this reader is an instance ofFilterDirectoryReader
. -
doWrapDirectoryReader
Called by the doOpenIfChanged() methods to return a new wrapped DirectoryReader.Implementations should just return an instantiation of themselves, wrapping the passed in DirectoryReader.
- Parameters:
in
- the DirectoryReader to wrap- Returns:
- the wrapped DirectoryReader
- Throws:
IOException
-
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 final 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
-
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
-
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
-
getIndexCommit
Description copied from class:DirectoryReader
Expert: return the IndexCommit that this reader has opened.- Specified by:
getIndexCommit
in classDirectoryReader
- Throws:
IOException
-
doClose
Description copied from class:IndexReader
Implements close.- Specified by:
doClose
in classIndexReader
- Throws:
IOException
-
getDelegate
Returns the wrappedDirectoryReader
.
-