org.apache.lucene.index
Class ReaderManager

java.lang.Object
  extended by org.apache.lucene.search.ReferenceManager<DirectoryReader>
      extended by org.apache.lucene.index.ReaderManager
All Implemented Interfaces:
Closeable

public final class ReaderManager
extends ReferenceManager<DirectoryReader>

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:
SearcherManager
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
ReaderManager(Directory dir)
          Creates and returns a new ReaderManager from the given Directory.
ReaderManager(IndexWriter writer, boolean applyAllDeletes)
          Creates and returns a new ReaderManager from the given IndexWriter.
 
Method Summary
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
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ReaderManager

public ReaderManager(IndexWriter writer,
                     boolean applyAllDeletes)
              throws IOException
Creates and returns a new ReaderManager from the given IndexWriter.

Parameters:
writer - the IndexWriter to open the IndexReader from.
applyAllDeletes - If true, all buffered deletes will be applied (made visible) in the IndexSearcher / DirectoryReader. If false, 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 passing false. See DirectoryReader.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 given Directory.

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 class ReferenceManager<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. Returns null if no refresh was needed, otherwise a new refreshed reference.

Specified by:
refreshIfNeeded in class ReferenceManager<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 class ReferenceManager<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 class ReferenceManager<DirectoryReader>


Copyright © 2000-2014 Apache Software Foundation. All Rights Reserved.