## org.apache.lucene.search
Class MultiCollector

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

    public class MultiCollector

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

Method Summary
`boolean` `acceptsDocsOutOfOrder()` Return `true` if this collector does not require the matching docIDs to be delivered in int sort order (smallest to largest) to `Collector.collect(int)`.
`void` `collect(int doc)` Called once for every document matching a query, with the unbased document number.
`void` `setNextReader(AtomicReaderContext context)` Called before collecting from each `AtomicReaderContext`.
`void` `setScorer(Scorer s)` Called before successive calls to `Collector.collect(int)`.
`static Collector` `wrap(Collector... collectors)` Wraps a list of `Collector`s with a `MultiCollector`.

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)

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

### acceptsDocsOutOfOrder

    public boolean acceptsDocsOutOfOrder()

  Description copied from class: `Collector`
  Return `true` if this collector does not require the matching docIDs to be delivered in int sort order (smallest to largest) to `Collector.collect(int)`.

  Most Lucene Query implementations will visit matching docIDs in order. However, some queries (currently limited to certain cases of `BooleanQuery`) can achieve faster searching if the `Collector` allows them to deliver the docIDs out of order.

  Many collectors don't mind getting docIDs out of order, so it's important to return `true` here.

  Specified by:
    `acceptsDocsOutOfOrder` in class `Collector`

### collect

    public void collect(int doc)
                 throws IOException

  Description copied from class: `Collector`
  Called once for every document matching a query, with the unbased document number.

  Note: This is called in an inner search loop. For good search performance, implementations of this method should not call `IndexSearcher.doc(int)` or `IndexReader.document(int)` on every hit. Doing so can slow searches by an order of magnitude or more.

  Specified by:
    `collect` in class `Collector`
  Throws:
    `IOException`

### setNextReader

    public void setNextReader(AtomicReaderContext context)
                       throws IOException

  Description copied from class: `Collector`
  Called before collecting from each `AtomicReaderContext`. All doc ids in `Collector.collect(int)` will correspond to `IndexReaderContext.reader()`. Add `AtomicReaderContext.docBase` to the current `IndexReaderContext.reader()`'s internal document id to re-base ids in `Collector.collect(int)`.

  Specified by:
    `setNextReader` in class `Collector`
  Parameters:
    `context` - next atomic reader context
  Throws:
    `IOException`

### setScorer

    public void setScorer(Scorer s)
                   throws IOException

  Description copied from class: `Collector`
  Called before successive calls to `Collector.collect(int)`. Implementations that need the score of the current document (passed-in to `Collector.collect(int)`), should save the passed-in Scorer and call scorer.score() when needed.

  Specified by:
    `setScorer` in class `Collector`
  Throws:
    `IOException`

Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.