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 and Description
`GroupReducer()`

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`void` `collect(T value, int doc)` Collect a given document into a given group
`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.
`void` `setNextReader(LeafReaderContext ctx)` Called when the parent `SecondPassGroupingCollector` moves to a new segment
`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 Detail

#### GroupReducer

    public GroupReducer()

### Method Detail

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