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.ReaderClosedListener`

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

### Method Summary

Methods
`protected void` `doClose()` Implements close.

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

`docFreq, document, getSequentialSubReaders, getTermVectors, hasDeletions, 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

`addReaderClosedListener, close, decRef, document, document, ensureOpen, equals, getCombinedCoreAndDeletesKey, getCoreCacheKey, getRefCount, getTermVector, hashCode, incRef, leaves, numDeletedDocs, open, open, open, open, open, registerParentReader, removeReaderClosedListener, tryIncRef`

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

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

### Constructor Detail

#### MultiReader

    public MultiReader(IndexReader... subReaders)

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

#### MultiReader

    public MultiReader(IndexReader[] subReaders,
               boolean closeSubReaders)

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

### Method Detail

#### doClose

    protected void doClose()
                    throws IOException

Description copied from class: `IndexReader`
Implements close.

Specified by:
  `doClose` in class `IndexReader`
Throws:
  `IOException`