## org.apache.lucene.search.grouping
Class TermFirstPassGroupingCollector

    java.lang.Object
      org.apache.lucene.search.Collector
          org.apache.lucene.search.grouping.AbstractFirstPassGroupingCollector<String>
              org.apache.lucene.search.grouping.TermFirstPassGroupingCollector

    public class TermFirstPassGroupingCollector

extends AbstractFirstPassGroupingCollector<String>

Concrete implementation of `AbstractFirstPassGroupingCollector` that groups based on field values and more specifically uses `FieldCache.StringIndex` to collect groups.

WARNING: This API is experimental and might change in incompatible ways in the next release.

Constructor Summary
`TermFirstPassGroupingCollector(String groupField, Sort groupSort, int topNGroups)` Create the first pass collector.

Method Summary
`protected String` `copyDocGroupValue(String groupValue, String reuse)` Returns a copy of the specified group value by creating a new instance and copying the value from the specified groupValue in the new instance.
`protected String` `getDocGroupValue(int doc)` Returns the group value for the specified doc.
`void` `setNextReader(IndexReader reader, int docBase)` Called before collecting from each IndexReader.

Methods inherited from class org.apache.lucene.search.grouping.AbstractFirstPassGroupingCollector
`acceptsDocsOutOfOrder, collect, getTopGroups, setScorer`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### TermFirstPassGroupingCollector

    public TermFirstPassGroupingCollector(String groupField,
                                          Sort groupSort,
                                          int topNGroups)
                                   throws IOException

  Create the first pass collector.

  Parameters:
    `groupField` - The field used to group documents. This field must be single-valued and indexed (FieldCache is used to access its value per-document).
    `groupSort` - The `Sort` used to sort the groups. The top sorted document within each group according to groupSort, determines how that group sorts against other groups. This must be non-null, ie, if you want to groupSort by relevance use Sort.RELEVANCE.
    `topNGroups` - How many top groups to keep.
  Throws:
    `IOException` - When I/O related errors occur

Method Detail

### getDocGroupValue

    protected String getDocGroupValue(int doc)

  Description copied from class: `AbstractFirstPassGroupingCollector`
  Returns the group value for the specified doc.

  Specified by:
    `getDocGroupValue` in class `AbstractFirstPassGroupingCollector<String>`
  Parameters:
    `doc` - The specified doc
  Returns:
    the group value for the specified doc

### copyDocGroupValue

    protected String copyDocGroupValue(String groupValue,
                                       String reuse)

  Description copied from class: `AbstractFirstPassGroupingCollector`
  Returns a copy of the specified group value by creating a new instance and copying the value from the specified groupValue in the new instance. Or optionally the reuse argument can be used to copy the group value in.

  Specified by:
    `copyDocGroupValue` in class `AbstractFirstPassGroupingCollector<String>`
  Parameters:
    `groupValue` - The group value to copy
    `reuse` - Optionally a reuse instance to prevent a new instance creation
  Returns:
    a copy of the specified group value

### setNextReader

    public void setNextReader(IndexReader reader,
                              int docBase)
                       throws IOException

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

  Overrides:
    `setNextReader` in class `AbstractFirstPassGroupingCollector<String>`
  Parameters:
    `reader` - next IndexReader
  Throws:
    `IOException`