Package org.apache.lucene.index
Class ReaderManager
- java.lang.Object
-
- org.apache.lucene.search.ReferenceManager<DirectoryReader>
-
- org.apache.lucene.index.ReaderManager
-
- All Implemented Interfaces:
Closeable
,AutoCloseable
public final class ReaderManager extends ReferenceManager<DirectoryReader>
Utility class to safely shareDirectoryReader
instances across multiple threads, while periodically reopening. This class ensures each reader is closed only once all threads have finished using it.- See Also:
SearcherManager
-
-
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
Constructors Constructor Description ReaderManager(IndexWriter writer, boolean applyAllDeletes)
Creates and returns a new ReaderManager from the givenIndexWriter
.ReaderManager(Directory dir)
Creates and returns a new ReaderManager from the givenDirectory
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
decRef(DirectoryReader reference)
Decrement reference counting on the given reference.protected int
getRefCount(DirectoryReader reference)
Returns the current reference count of the given reference.protected DirectoryReader
refreshIfNeeded(DirectoryReader referenceToRefresh)
Refresh the given reference if needed.protected boolean
tryIncRef(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 Detail
-
ReaderManager
public ReaderManager(IndexWriter writer, boolean applyAllDeletes) throws IOException
Creates and returns a new ReaderManager from the givenIndexWriter
.- 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)
.- Throws:
IOException
- If there is a low-level I/O error
-
ReaderManager
public ReaderManager(Directory dir) throws IOException
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
-
-
Method Detail
-
decRef
protected void decRef(DirectoryReader reference) throws IOException
Description copied from class:ReferenceManager
Decrement reference counting on the given reference.- Specified by:
decRef
in classReferenceManager<DirectoryReader>
- Throws:
IOException
- if reference decrement on the given resource failed.
-
refreshIfNeeded
protected DirectoryReader refreshIfNeeded(DirectoryReader referenceToRefresh) throws IOException
Description copied from class:ReferenceManager
Refresh the given reference if needed. Returnsnull
if no refresh was needed, otherwise a new refreshed reference.- Specified by:
refreshIfNeeded
in classReferenceManager<DirectoryReader>
- Throws:
IOException
- if the refresh operation failed
-
tryIncRef
protected boolean tryIncRef(DirectoryReader reference)
Description copied from class:ReferenceManager
Try to increment reference counting on the given reference. Return true if the operation was successful.- Specified by:
tryIncRef
in classReferenceManager<DirectoryReader>
-
getRefCount
protected int getRefCount(DirectoryReader reference)
Description copied from class:ReferenceManager
Returns the current reference count of the given reference.- Specified by:
getRefCount
in classReferenceManager<DirectoryReader>
-
-