Package org.apache.lucene.search.grouping

# Class GroupReducer<T,C extends Collector>

java.lang.Object
org.apache.lucene.search.grouping.GroupReducer<T,C>

Type Parameters:
  `T` - the type of the value used for grouping
  `C` - the type of `Collector` used to reduce each group

public abstract class GroupReducer<T,C extends Collector> extends Object
Concrete implementations of this class define what to collect for individual groups during the second-pass of a grouping search.

Each group is assigned a Collector returned by `newCollector()`, and `LeafCollector.collect(int)` is called for each document that is in a group

See Also:
  - `SecondPassGroupingCollector`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `GroupReducer()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `final void`
  `collect(T value, int doc)`
  Collect a given document into a given group
  `final C`
  `getCollector(T value)`
  Get the Collector for a given group
  `abstract boolean`
  `needsScores()`
  Whether or not this reducer requires collected documents to be scored
  `protected abstract C`
  `newCollector()`
  Creates a new Collector for each group
  `void`
  `setGroups(Collection<SearchGroup<T>> groups)`
  Define which groups should be reduced.
  `final void`
  `setNextReader(LeafReaderContext ctx)`
  Called when the parent `SecondPassGroupingCollector` moves to a new segment
  `final void`
  `setScorer(Scorable scorer)`
  Set the Scorer on all group collectors

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

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

- ## Constructor Details

  - ### GroupReducer

    public GroupReducer()

- ## Method Details

  - ### setGroups

    public void setGroups(Collection<SearchGroup<T>> groups)
    Define which groups should be reduced.

    Called by `SecondPassGroupingCollector`

  - ### needsScores

    public abstract boolean needsScores()
    Whether or not this reducer requires collected documents to be scored

  - ### newCollector

    protected abstract C newCollector()
    Creates a new Collector for each group

  - ### getCollector

    public final C getCollector(T value)
    Get the Collector for a given group

  - ### collect

    public final void collect(T value, int doc) throws IOException
    Collect a given document into a given group
    Throws:
      `IOException` - on error

  - ### setScorer

    public final void setScorer(Scorable scorer) throws IOException
    Set the Scorer on all group collectors
    Throws:
      `IOException`

  - ### setNextReader

    public final void setNextReader(LeafReaderContext ctx) throws IOException
    Called when the parent `SecondPassGroupingCollector` moves to a new segment
    Throws:
      `IOException`