Class FilterDirectoryReader
- java.lang.Object
-
- org.apache.lucene.index.IndexReader
-
- org.apache.lucene.index.CompositeReader
-
- org.apache.lucene.index.BaseCompositeReader<AtomicReader>
-
- org.apache.lucene.index.DirectoryReader
-
- org.apache.lucene.index.FilterDirectoryReader
-
- All Implemented Interfaces:
Closeable,AutoCloseable
public abstract class FilterDirectoryReader extends DirectoryReader
A FilterDirectoryReader wraps another DirectoryReader, allowing implementations to transform or extend it. 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
Nested Classes Modifier and Type Class Description static classFilterDirectoryReader.StandardReaderWrapperA no-op SubReaderWrapper that simply returns the parent DirectoryReader's original subreaders.static classFilterDirectoryReader.SubReaderWrapperFactory 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.ReaderClosedListener
-
-
Field Summary
Fields Modifier and Type Field Description protected DirectoryReaderinThe filtered DirectoryReader-
Fields inherited from class org.apache.lucene.index.DirectoryReader
DEFAULT_TERMS_INDEX_DIVISOR, directory
-
-
Constructor Summary
Constructors Constructor Description FilterDirectoryReader(DirectoryReader in)Create a new FilterDirectoryReader that filters a passed in DirectoryReader.FilterDirectoryReader(DirectoryReader in, FilterDirectoryReader.SubReaderWrapper wrapper)Create a new FilterDirectoryReader that filters a passed in DirectoryReader, using the supplied SubReaderWrapper to wrap its subreader.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected voiddoClose()Implements close.protected DirectoryReaderdoOpenIfChanged()Implement this method to supportDirectoryReader.openIfChanged(DirectoryReader).protected DirectoryReaderdoOpenIfChanged(IndexCommit commit)Implement this method to supportDirectoryReader.openIfChanged(DirectoryReader,IndexCommit).protected DirectoryReaderdoOpenIfChanged(IndexWriter writer, boolean applyAllDeletes)Implement this method to supportDirectoryReader.openIfChanged(DirectoryReader,IndexWriter,boolean).protected abstract DirectoryReaderdoWrapDirectoryReader(DirectoryReader in)Called by the doOpenIfChanged() methods to return a new wrapped DirectoryReader.IndexCommitgetIndexCommit()Expert: return the IndexCommit that this reader has opened.longgetVersion()Version number when this IndexReader was opened.booleanisCurrent()Check whether any new changes have occurred to the index since this reader was opened.-
Methods inherited from class org.apache.lucene.index.DirectoryReader
directory, indexExists, listCommits, open, open, open, open, open, 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
addReaderClosedListener, close, decRef, document, document, ensureOpen, equals, getCombinedCoreAndDeletesKey, getCoreCacheKey, getRefCount, getTermVector, hasDeletions, hashCode, incRef, leaves, numDeletedDocs, registerParentReader, removeReaderClosedListener, tryIncRef
-
-
-
-
Field Detail
-
in
protected final DirectoryReader in
The filtered DirectoryReader
-
-
Constructor Detail
-
FilterDirectoryReader
public FilterDirectoryReader(DirectoryReader in)
Create a new FilterDirectoryReader that filters a passed in DirectoryReader.- Parameters:
in- the DirectoryReader to filter
-
FilterDirectoryReader
public FilterDirectoryReader(DirectoryReader in, FilterDirectoryReader.SubReaderWrapper wrapper)
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
-
-
Method Detail
-
doWrapDirectoryReader
protected abstract DirectoryReader doWrapDirectoryReader(DirectoryReader in)
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
-
doOpenIfChanged
protected final DirectoryReader doOpenIfChanged() throws IOException
Description copied from class:DirectoryReaderImplement 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:
doOpenIfChangedin 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(IndexCommit commit) throws IOException
Description copied from class:DirectoryReaderImplement this method to supportDirectoryReader.openIfChanged(DirectoryReader,IndexCommit). If this reader does not support reopen from a specificIndexCommit, throwUnsupportedOperationException.- Specified by:
doOpenIfChangedin 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:DirectoryReaderImplement this method to supportDirectoryReader.openIfChanged(DirectoryReader,IndexWriter,boolean). If this reader does not support reopen fromIndexWriter, throwUnsupportedOperationException.- Specified by:
doOpenIfChangedin 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:DirectoryReaderVersion 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:
getVersionin classDirectoryReader
-
isCurrent
public boolean isCurrent() throws IOExceptionDescription copied from class:DirectoryReaderCheck 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,boolean), 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:
isCurrentin classDirectoryReader- Throws:
IOException- if there is a low-level IO error
-
getIndexCommit
public IndexCommit getIndexCommit() throws IOException
Description copied from class:DirectoryReaderExpert: return the IndexCommit that this reader has opened.- Specified by:
getIndexCommitin classDirectoryReader- Throws:
IOException
-
doClose
protected void doClose() throws IOExceptionDescription copied from class:IndexReaderImplements close.- Specified by:
doClosein classIndexReader- Throws:
IOException
-
-