Package 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
  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

  Modifier and Type
  Method
  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, getDocCount, getSequentialSubReaders, getSumDocFreq, getSumTotalTermFreq, maxDoc, numDocs, readerBase, readerIndex, storedFields, termVectors, totalTermFreq`

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

  `getContext, toString`

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

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

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