Package org.apache.lucene.search

## Class MultiCollector

- java.lang.Object
- - org.apache.lucene.search.MultiCollector

- All Implemented Interfaces:
    `Collector`

      public class MultiCollector
      extends Object
      implements Collector

  A `Collector` which allows running a search with several `Collector`s. It offers a static `wrap(org.apache.lucene.search.Collector...)` method which accepts a list of collectors and wraps them with `MultiCollector`, while filtering out the `null` null ones.

  NOTE:When mixing collectors that want to skip low-scoring hits (`ScoreMode.TOP_SCORES`) with ones that require to see all hits, such as mixing `TopScoreDocCollector` and `TotalHitCountCollector`, it should be faster to run the query twice, once for each collector, rather than using this wrapper on a single search.

- - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `Collector[]` | `getCollectors()` | Provides access to the wrapped `Collector`s for advanced use-cases
    `LeafCollector` | `getLeafCollector​(LeafReaderContext context)` | Create a new `collector` to collect the given context.
    `ScoreMode` | `scoreMode()` | Indicates what features are required from the scorer.
    `void` | `setWeight​(Weight weight)` | Set the `Weight` that will be used to produce scorers that will feed `LeafCollector`s.
    `static Collector` | `wrap​(Iterable<? extends Collector> collectors)` | Wraps a list of `Collector`s with a `MultiCollector`.
    `static Collector` | `wrap​(Collector... collectors)` | See `wrap(Iterable)`.

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

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

- - ### Method Detail

    - #### wrap

          public static Collector wrap​(Collector... collectors)

      See `wrap(Iterable)`.

    - #### wrap

          public static Collector wrap​(Iterable<? extends Collector> collectors)

      Wraps a list of `Collector`s with a `MultiCollector`. This method works as follows:
      - Filters out the `null` collectors, so they are not used during search time.
      - If the input contains 1 real collector (i.e. non-`null` ), it is returned.
      - Otherwise the method returns a `MultiCollector` which wraps the non-`null` ones.
      Throws:
        `IllegalArgumentException` - if either 0 collectors were input, or all collectors are `null`.

    - #### scoreMode

          public ScoreMode scoreMode()

      Description copied from interface: `Collector`
      Indicates what features are required from the scorer.
      Specified by:
        `scoreMode` in interface `Collector`

    - #### getLeafCollector

          public LeafCollector getLeafCollector​(LeafReaderContext context)
                                         throws IOException

      Description copied from interface: `Collector`
      Create a new `collector` to collect the given context.
      Specified by:
        `getLeafCollector` in interface `Collector`
      Parameters:
        `context` - next atomic reader context
      Throws:
        `IOException`

    - #### setWeight

          public void setWeight​(Weight weight)

      Description copied from interface: `Collector`
      Set the `Weight` that will be used to produce scorers that will feed `LeafCollector`s. This is typically useful to have access to `Weight.count(org.apache.lucene.index.LeafReaderContext)` from `Collector.getLeafCollector(org.apache.lucene.index.LeafReaderContext)`.
      Specified by:
        `setWeight` in interface `Collector`

    - #### getCollectors

          public Collector[] getCollectors()

      Provides access to the wrapped `Collector`s for advanced use-cases