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

  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 Details

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