Package org.apache.lucene.index

## Class MultiFields

- java.lang.Object
- - org.apache.lucene.index.Fields
  - - org.apache.lucene.index.MultiFields

- All Implemented Interfaces:
    `Iterable<String>`

      public final class MultiFields
      extends Fields

  Provides a single `Fields` term index view over an `IndexReader`. This is useful when you're interacting with an `IndexReader` implementation that consists of sequential sub-readers (eg `DirectoryReader` or `MultiReader`) and you must treat it as a `LeafReader`.

  NOTE: for composite readers, you'll get better performance by gathering the sub readers using `IndexReader.getContext()` to get the atomic leaves and then operate per-LeafReader, instead of using this class.

  NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

- - ### Field Summary

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

      `EMPTY_ARRAY`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `MultiFields​(Fields[] subs, ReaderSlice[] subSlices)` | Sole constructor.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `Iterator<String>` | `iterator()` | Returns an iterator that will step through all fields names.
    `int` | `size()` | Returns the number of fields or -1 if the number of distinct field names is unknown.
    `Terms` | `terms​(String field)` | Get the `Terms` for this field.

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

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface java.lang.Iterable

      `forEach, spliterator`

- - ### Constructor Detail

    - #### MultiFields

          public MultiFields​(Fields[] subs,
                             ReaderSlice[] subSlices)

      Sole constructor.

  - ### Method Detail

    - #### iterator

          public Iterator<String> iterator()

      Description copied from class: `Fields`
      Returns an iterator that will step through all fields names. This will not return null.
      Specified by:
        `iterator` in interface `Iterable<String>`
      Specified by:
        `iterator` in class `Fields`

    - #### terms

          public Terms terms​(String field)
                      throws IOException

      Description copied from class: `Fields`
      Get the `Terms` for this field. This will return null if the field does not exist.
      Specified by:
        `terms` in class `Fields`
      Throws:
        `IOException`

    - #### size

          public int size()

      Description copied from class: `Fields`
      Returns the number of fields or -1 if the number of distinct field names is unknown. If >= 0, `Fields.iterator()` will return as many field names.
      Specified by:
        `size` in class `Fields`