ExitableDirectoryReader (Lucene 10.5.0 core API)
Description: declaration: package: org.apache.lucene.index, class: ExitableDirectoryReader

Package org.apache.lucene.index

# Class ExitableDirectoryReader

java.lang.Object
org.apache.lucene.index.IndexReader
org.apache.lucene.index.CompositeReader
org.apache.lucene.index.BaseCompositeReader<LeafReader>
org.apache.lucene.index.DirectoryReader
org.apache.lucene.index.FilterDirectoryReader
org.apache.lucene.index.ExitableDirectoryReader

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`

public class ExitableDirectoryReader extends FilterDirectoryReader
The `ExitableDirectoryReader` wraps a real index `DirectoryReader` and allows for a `QueryTimeout` implementation object to be checked periodically to see if the thread should exit or not. If `QueryTimeout.shouldExit()` returns true, an `ExitableDirectoryReader.ExitingReaderException` is thrown.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static class`
  `ExitableDirectoryReader.ExitableFilterAtomicReader`
  Wrapper class for another FilterAtomicReader.
  `static class`
  `ExitableDirectoryReader.ExitableSubReaderWrapper`
  Wrapper class for a SubReaderWrapper that is used by the ExitableDirectoryReader.
  `static class`
  `ExitableDirectoryReader.ExitableTerms`
  Wrapper class for another Terms implementation that is used by ExitableFields.
  `static class`
  `ExitableDirectoryReader.ExitableTermsEnum`
  Wrapper class for TermsEnum that is used by ExitableTerms for implementing an exitable enumeration of terms.
  `static class`
  `ExitableDirectoryReader.ExitingReaderException`
  Exception that is thrown to prematurely terminate a term enumeration.

  ## Nested classes/interfaces inherited from class org.apache.lucene.index.FilterDirectoryReader

  `FilterDirectoryReader.DelegatingCacheHelper, FilterDirectoryReader.SubReaderWrapper`

  ## 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.FilterDirectoryReader

  `in`

  ### Fields inherited from class org.apache.lucene.index.DirectoryReader

  `directory`

  ### Fields inherited from class org.apache.lucene.index.BaseCompositeReader

  `subReadersSorter`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ExitableDirectoryReader(DirectoryReader in, QueryTimeout queryTimeout)`
  Constructor

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected DirectoryReader`
  `doWrapDirectoryReader(DirectoryReader in)`
  Called by the doOpenIfChanged() methods to return a new wrapped DirectoryReader.
  `IndexReader.CacheHelper`
  `getReaderCacheHelper()`
  Optional method: Return a `IndexReader.CacheHelper` that can be used to cache based on the content of this reader.
  `String`
  `toString()`
  `static DirectoryReader`
  `wrap(DirectoryReader in, QueryTimeout queryTimeout)`
  Wraps a provided DirectoryReader.

  ### Methods inherited from class org.apache.lucene.index.FilterDirectoryReader

  `doClose, doOpenIfChanged, doOpenIfChanged, doOpenIfChanged, doOpenIfChanged, doOpenIfChanged, doOpenIfChanged, getDelegate, getIndexCommit, getVersion, isCurrent, unwrap`

  ### Methods inherited from class org.apache.lucene.index.DirectoryReader

  `directory, indexExists, listCommits, open, open, open, open, open, open, open, open, open, open, openIfChanged, openIfChanged, openIfChanged, openIfChanged, openIfChanged, openIfChanged, openIfChanged, openIfChanged`

  ### Methods inherited from class org.apache.lucene.index.BaseCompositeReader

  `docFreq, getDocCount, getSequentialSubReaders, getSumDocFreq, getSumTotalTermFreq, maxDoc, numDocs, readerBase, readerIndex, storedFields, termVectors, totalTermFreq`

  ### Methods inherited from class org.apache.lucene.index.CompositeReader

  `getContext`

  ### Methods inherited from class org.apache.lucene.index.IndexReader

  `close, decRef, ensureOpen, equals, getRefCount, hasDeletions, hashCode, incRef, leaves, notifyReaderClosedListeners, numDeletedDocs, registerParentReader, tryIncRef`

  ### Methods inherited from class java.lang.Object

  `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### ExitableDirectoryReader

    public ExitableDirectoryReader(DirectoryReader in, QueryTimeout queryTimeout) throws IOException
    Constructor
    Parameters:
      `in` - DirectoryReader that this ExitableDirectoryReader wraps around to make it Exitable.
      `queryTimeout` - The object to periodically check if the query should time out.
    Throws:
      `IOException`

- ## Method Details

  - ### doWrapDirectoryReader

    protected DirectoryReader doWrapDirectoryReader(DirectoryReader in) throws IOException
    Description copied from class: `FilterDirectoryReader`
    Called by the doOpenIfChanged() methods to return a new wrapped DirectoryReader.

    Implementations should just return an instantiation of themselves, wrapping the passed in DirectoryReader.

    Specified by:
      `doWrapDirectoryReader` in class `FilterDirectoryReader`
    Parameters:
      `in` - the DirectoryReader to wrap
    Returns:
      the wrapped DirectoryReader
    Throws:
      `IOException`

  - ### wrap

    public static DirectoryReader wrap(DirectoryReader in, QueryTimeout queryTimeout) throws IOException
    Wraps a provided DirectoryReader. Note that for convenience, the returned reader can be used normally (e.g. passed to `DirectoryReader.openIfChanged(DirectoryReader)`) and so on.
    Throws:
      `IOException`

  - ### getReaderCacheHelper

    public IndexReader.CacheHelper getReaderCacheHelper()
    Description copied from class: `IndexReader`
    Optional method: Return a `IndexReader.CacheHelper` that can be used to cache based on the content of this reader. Two readers that have different data or different sets of deleted documents will be considered different.

    A return value of `null` indicates that this reader is not suited for caching, which is typically the case for short-lived wrappers that alter the content of the wrapped reader.

    Specified by:
      `getReaderCacheHelper` in class `IndexReader`

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `CompositeReader`