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

Package org.apache.lucene.index

# Class StandardDirectoryReader

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.StandardDirectoryReader

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`

public final class StandardDirectoryReader extends DirectoryReader
Default implementation of `DirectoryReader`.

- ## Nested Class Summary

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

  `directory`

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

  `subReadersSorter`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected void`
  `doClose()`
  Implements close.
  `protected DirectoryReader`
  `doOpenIfChanged()`
  Implement this method to support `DirectoryReader.openIfChanged(DirectoryReader)`.
  `protected DirectoryReader`
  `doOpenIfChanged(ExecutorService executorService)`
  Implement this method to support `DirectoryReader.openIfChanged(DirectoryReader)`.
  `protected DirectoryReader`
  `doOpenIfChanged(IndexCommit commit)`
  Implement this method to support `DirectoryReader.openIfChanged(DirectoryReader,IndexCommit)`.
  `protected DirectoryReader`
  `doOpenIfChanged(IndexCommit commit, ExecutorService executorService)`
  Implement this method to support `DirectoryReader.openIfChanged(DirectoryReader,IndexCommit)`.
  `protected DirectoryReader`
  `doOpenIfChanged(IndexWriter writer, boolean applyAllDeletes)`
  Implement this method to support `DirectoryReader.openIfChanged(DirectoryReader,IndexWriter,boolean)`.
  `protected DirectoryReader`
  `doOpenIfChanged(IndexWriter writer, boolean applyAllDeletes, ExecutorService executorService)`
  Implement this method to support `DirectoryReader.openIfChanged(DirectoryReader,IndexWriter,boolean)`.
  `IndexCommit`
  `getIndexCommit()`
  Expert: return the IndexCommit that this reader has opened.
  `IndexReader.CacheHelper`
  `getReaderCacheHelper()`
  Optional method: Return a `IndexReader.CacheHelper` that can be used to cache based on the content of this reader.
  `SegmentInfos`
  `getSegmentInfos()`
  Return the `SegmentInfos` for this reader.
  `long`
  `getVersion()`
  Version number when this IndexReader was opened.
  `boolean`
  `isCurrent()`
  Check whether any new changes have occurred to the index since this reader was opened.
  `protected void`
  `notifyReaderClosedListeners()`
  For test framework use only.
  `static DirectoryReader`
  `open(Directory directory, SegmentInfos infos, List<? extends LeafReader> oldReaders, Comparator<LeafReader> leafSorter, ExecutorService executor)`
  This constructor is only used for `doOpenIfChanged(SegmentInfos, ExecutorService)` and NRT replication
  `String`
  `toString()`

  ### 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, numDeletedDocs, registerParentReader, tryIncRef`

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

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

- ## Method Details

  - ### open

    public static DirectoryReader open(Directory directory, SegmentInfos infos, List<? extends LeafReader> oldReaders, Comparator<LeafReader> leafSorter, ExecutorService executor) throws IOException
    This constructor is only used for `doOpenIfChanged(SegmentInfos, ExecutorService)` and NRT replication
    Throws:
      `IOException`
    NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

  - ### toString

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

  - ### doOpenIfChanged

    protected DirectoryReader doOpenIfChanged() throws IOException
    Description copied from class: `DirectoryReader`
    Implement this method to support `DirectoryReader.openIfChanged(DirectoryReader)`. If this reader does not support reopen, return `null`, so client code is happy. This should be consistent with `DirectoryReader.isCurrent()` (should always return `true`) if reopen is not supported.
    Specified by:
      `doOpenIfChanged` in class `DirectoryReader`
    Returns:
      null if there are no changes; else, a new DirectoryReader instance.
    Throws:
      `IOException` - if there is a low-level IO error

  - ### doOpenIfChanged

    protected DirectoryReader doOpenIfChanged(ExecutorService executorService) throws IOException
    Description copied from class: `DirectoryReader`
    Implement this method to support `DirectoryReader.openIfChanged(DirectoryReader)`. If this reader does not support reopen, return `null`, so client code is happy. This should be consistent with `DirectoryReader.isCurrent()` (should always return `true`) if reopen is not supported. ExecutorService provides intra-opening concurrency.
    Specified by:
      `doOpenIfChanged` in class `DirectoryReader`
    Returns:
      null if there are no changes; else, a new DirectoryReader instance.
    Throws:
      `IOException` - if there is a low-level IO error

  - ### doOpenIfChanged

    protected DirectoryReader doOpenIfChanged(IndexCommit commit) throws IOException
    Description copied from class: `DirectoryReader`
    Implement this method to support `DirectoryReader.openIfChanged(DirectoryReader,IndexCommit)`. If this reader does not support reopen from a specific `IndexCommit`, throw `UnsupportedOperationException`.
    Specified by:
      `doOpenIfChanged` in class `DirectoryReader`
    Returns:
      null if there are no changes; else, a new DirectoryReader instance.
    Throws:
      `IOException` - if there is a low-level IO error

  - ### doOpenIfChanged

    protected DirectoryReader doOpenIfChanged(IndexCommit commit, ExecutorService executorService) throws IOException
    Description copied from class: `DirectoryReader`
    Implement this method to support `DirectoryReader.openIfChanged(DirectoryReader,IndexCommit)`. If this reader does not support reopen from a specific `IndexCommit`, throw `UnsupportedOperationException`. ExecutorService provides intra-opening concurrency.
    Specified by:
      `doOpenIfChanged` in class `DirectoryReader`
    Returns:
      null if there are no changes; else, a new DirectoryReader instance.
    Throws:
      `IOException` - if there is a low-level IO error

  - ### doOpenIfChanged

    protected DirectoryReader doOpenIfChanged(IndexWriter writer, boolean applyAllDeletes) throws IOException
    Description copied from class: `DirectoryReader`
    Implement this method to support `DirectoryReader.openIfChanged(DirectoryReader,IndexWriter,boolean)`. If this reader does not support reopen from `IndexWriter`, throw `UnsupportedOperationException`.
    Specified by:
      `doOpenIfChanged` in class `DirectoryReader`
    Returns:
      null if there are no changes; else, a new DirectoryReader instance.
    Throws:
      `IOException` - if there is a low-level IO error

  - ### doOpenIfChanged

    protected DirectoryReader doOpenIfChanged(IndexWriter writer, boolean applyAllDeletes, ExecutorService executorService) throws IOException
    Description copied from class: `DirectoryReader`
    Implement this method to support `DirectoryReader.openIfChanged(DirectoryReader,IndexWriter,boolean)`. If this reader does not support reopen from `IndexWriter`, throw `UnsupportedOperationException`. ExecutorService used to open segment readers in parallel.
    Specified by:
      `doOpenIfChanged` in class `DirectoryReader`
    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: `DirectoryReader`
    Version 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:
      `getVersion` in class `DirectoryReader`

  - ### getSegmentInfos

    public SegmentInfos getSegmentInfos()
    Return the `SegmentInfos` for this reader.
    NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

  - ### isCurrent

    public boolean isCurrent() throws IOException
    Description copied from class: `DirectoryReader`
    Check 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 (see `IndexWriter.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)`, or by calling `DirectoryReader.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:
      `isCurrent` in class `DirectoryReader`
    Throws:
      `IOException` - if there is a low-level IO error

  - ### doClose

    protected void doClose() throws IOException
    Description copied from class: `IndexReader`
    Implements close.
    Specified by:
      `doClose` in class `IndexReader`
    Throws:
      `IOException`

  - ### getIndexCommit

    public IndexCommit getIndexCommit() throws IOException
    Description copied from class: `DirectoryReader`
    Expert: return the IndexCommit that this reader has opened.
    Specified by:
      `getIndexCommit` in class `DirectoryReader`
    Throws:
      `IOException`

  - ### notifyReaderClosedListeners

    protected void notifyReaderClosedListeners() throws IOException
    Description copied from class: `IndexReader`
    For test framework use only.
    Overrides:
      `notifyReaderClosedListeners` in class `IndexReader`
    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`