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

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `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`