org.apache.lucene.index

## Class MultiReader

- java.lang.Object
- - org.apache.lucene.index.IndexReader
  - - org.apache.lucene.index.CompositeReader
    - - org.apache.lucene.index.BaseCompositeReader<IndexReader>
      - - org.apache.lucene.index.MultiReader

- All Implemented Interfaces:
    Closeable, AutoCloseable

      public class MultiReader
      extends BaseCompositeReader<IndexReader>

  A `CompositeReader` which reads multiple indexes, appending their content. It can be used to create a view on several sub-readers (like `DirectoryReader`) and execute searches on it.

  For efficiency, in this API documents are often referred to via document numbers, non-negative integers which each name a unique document in the index. These document numbers are ephemeral -- they may change as documents are added to and deleted from an index. Clients should thus not rely on a given document having the same number between sessions.

  NOTE: `IndexReader` instances are completely thread safe, meaning multiple threads can call any of its methods, concurrently. If your application requires external synchronization, you should not synchronize on the `IndexReader` instance; use your own (non-Lucene) objects instead.

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

      `subReadersSorter`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `MultiReader(IndexReader... subReaders)` Construct a MultiReader aggregating the named set of (sub)readers.
    `MultiReader(IndexReader[] subReaders, boolean closeSubReaders)` Construct a MultiReader aggregating the named set of (sub)readers.
    `MultiReader(IndexReader[] subReaders, Comparator<IndexReader> subReadersSorter, boolean closeSubReaders)` Construct a MultiReader aggregating the named set of (sub)readers.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `doClose()` Implements close.
    `IndexReader.CacheHelper` | `getReaderCacheHelper()` Optional method: Return a `IndexReader.CacheHelper` that can be used to cache based on the content of this reader.

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

      `docFreq, document, getDocCount, getSequentialSubReaders, getSumDocFreq, getSumTotalTermFreq, getTermVectors, maxDoc, numDocs, readerBase, readerIndex, totalTermFreq`

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

      `getContext, toString`

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

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

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

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

- - ### Constructor Detail

    - #### MultiReader

          public MultiReader(IndexReader... subReaders)
                      throws IOException

      Construct a MultiReader aggregating the named set of (sub)readers.

      Note that all subreaders are closed if this Multireader is closed.

      Parameters:
        `subReaders` - set of (sub)readers
      Throws:
        `IOException`

    - #### MultiReader

          public MultiReader(IndexReader[] subReaders,
                             boolean closeSubReaders)
                      throws IOException

      Construct a MultiReader aggregating the named set of (sub)readers.

      Parameters:
        `subReaders` - set of (sub)readers; this array will be cloned.
        `closeSubReaders` - indicates whether the subreaders should be closed when this MultiReader is closed
      Throws:
        `IOException`

    - #### MultiReader

          public MultiReader(IndexReader[] subReaders,
                             Comparator<IndexReader> subReadersSorter,
                             boolean closeSubReaders)
                      throws IOException

      Construct a MultiReader aggregating the named set of (sub)readers.
      Parameters:
        `subReaders` - set of (sub)readers; this array will be cloned.
        `subReadersSorter` - – a comparator, that if not `null` is used for sorting sub readers.
        `closeSubReaders` - indicates whether the subreaders should be closed when this MultiReader is closed
      Throws:
        `IOException`

  - ### Method Detail

    - #### 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`

    - #### doClose

          protected void doClose()
                          throws IOException

      Description copied from class: `IndexReader`
      Implements close.
      Specified by:
        `doClose` in class `IndexReader`
      Throws:
        `IOException`

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