Package org.apache.lucene.index
Class ReaderManager
- All Implemented Interfaces:
Closeable,AutoCloseable
Utility class to safely share
DirectoryReader instances across multiple threads, while
periodically reopening. This class ensures each reader is closed only once all threads have
finished using it.- See Also:
- WARNING: This API is experimental and might change in incompatible ways in the next release.
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.lucene.search.ReferenceManager
ReferenceManager.RefreshListener -
Field Summary
Fields inherited from class org.apache.lucene.search.ReferenceManager
current -
Constructor Summary
ConstructorsConstructorDescriptionReaderManager(DirectoryReader reader) Creates and returns a new ReaderManager from the given already-openedDirectoryReader, stealing the incoming reference.ReaderManager(IndexWriter writer) Creates and returns a new ReaderManager from the givenIndexWriter.ReaderManager(IndexWriter writer, boolean applyAllDeletes, boolean writeAllDeletes) Expert: creates and returns a new ReaderManager from the givenIndexWriter, controlling whether past deletions should be applied.ReaderManager(Directory dir) Creates and returns a new ReaderManager from the givenDirectory. -
Method Summary
Modifier and TypeMethodDescriptionprotected voiddecRef(DirectoryReader reference) Decrement reference counting on the given reference.protected intgetRefCount(DirectoryReader reference) Returns the current reference count of the given reference.protected DirectoryReaderrefreshIfNeeded(DirectoryReader referenceToRefresh) Refresh the given reference if needed.protected booleantryIncRef(DirectoryReader reference) Try to increment reference counting on the given reference.Methods inherited from class org.apache.lucene.search.ReferenceManager
acquire, addListener, afterClose, afterMaybeRefresh, close, maybeRefresh, maybeRefreshBlocking, release, removeListener
-
Constructor Details
-
ReaderManager
Creates and returns a new ReaderManager from the givenIndexWriter.- Parameters:
writer- the IndexWriter to open the IndexReader from.- Throws:
IOException- If there is a low-level I/O error
-
ReaderManager
public ReaderManager(IndexWriter writer, boolean applyAllDeletes, boolean writeAllDeletes) throws IOException Expert: creates and returns a new ReaderManager from the givenIndexWriter, controlling whether past deletions should be applied.- Parameters:
writer- the IndexWriter to open the IndexReader from.applyAllDeletes- Iftrue, all buffered deletes will be applied (made visible) in theIndexSearcher/DirectoryReader. Iffalse, the deletes may or may not be applied, but remain buffered (in IndexWriter) so that they will be applied in the future. Applying deletes can be costly, so if your app can tolerate deleted documents being returned you might gain some performance by passingfalse. SeeDirectoryReader.openIfChanged(DirectoryReader, IndexWriter, boolean).writeAllDeletes- Iftrue, new deletes will be forcefully written to index files.- Throws:
IOException- If there is a low-level I/O error
-
ReaderManager
Creates and returns a new ReaderManager from the givenDirectory.- Parameters:
dir- the directory to open the DirectoryReader on.- Throws:
IOException- If there is a low-level I/O error
-
ReaderManager
Creates and returns a new ReaderManager from the given already-openedDirectoryReader, stealing the incoming reference.- Parameters:
reader- the directoryReader to use for future reopens- Throws:
IOException- If there is a low-level I/O error
-
-
Method Details
-
decRef
Description copied from class:ReferenceManagerDecrement reference counting on the given reference.- Specified by:
decRefin classReferenceManager<DirectoryReader>- Throws:
IOException- if reference decrement on the given resource failed.
-
refreshIfNeeded
Description copied from class:ReferenceManagerRefresh the given reference if needed. Returnsnullif no refresh was needed, otherwise a new refreshed reference.- Specified by:
refreshIfNeededin classReferenceManager<DirectoryReader>- Throws:
IOException- if the refresh operation failed
-
tryIncRef
Description copied from class:ReferenceManagerTry to increment reference counting on the given reference. Return true if the operation was successful.- Specified by:
tryIncRefin classReferenceManager<DirectoryReader>
-
getRefCount
Description copied from class:ReferenceManagerReturns the current reference count of the given reference.- Specified by:
getRefCountin classReferenceManager<DirectoryReader>
-