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