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

    java.lang.Object
      org.apache.lucene.search.Collector
          org.apache.lucene.search.grouping.AbstractAllGroupsCollector<String>
              org.apache.lucene.search.grouping.TermAllGroupsCollector

    public class TermAllGroupsCollector

extends AbstractAllGroupsCollector<String>

A collector that collects all groups that match the query. Only the group value is collected, and the order is undefined. This collector does not determine the most relevant document of a group.

Implementation detail: an int hash set (SentinelIntSet) is used to detect if a group is already added to the total count. For each segment the int set is cleared and filled with previous counted groups that occur in the new segment.

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

Constructor Summary
`TermAllGroupsCollector(String groupField)` Constructs a `AbstractAllGroupsCollector`.
`TermAllGroupsCollector(String groupField, int initialSize)` Expert: Constructs a `AbstractAllGroupsCollector`

Method Summary
`void` `collect(int doc)` Called once for every document matching a query, with the unbased document number.
`Collection<String>` `getGroups()` Returns the group values This is an unordered collections of group values.
`void` `setNextReader(IndexReader reader, int docBase)` Called before collecting from each IndexReader.

Methods inherited from class org.apache.lucene.search.grouping.AbstractAllGroupsCollector
`acceptsDocsOutOfOrder, getGroupCount, setScorer`

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

Constructor Detail

### TermAllGroupsCollector

    public TermAllGroupsCollector(String groupField,
                                  int initialSize)

  Expert: Constructs a `AbstractAllGroupsCollector`

  Parameters:
    `groupField` - The field to group by
    `initialSize` - The initial allocation size of the internal int set and group list which should roughly match the total number of expected unique groups. Be aware that the heap usage is 4 bytes * initialSize.

### TermAllGroupsCollector

    public TermAllGroupsCollector(String groupField)

  Constructs a `AbstractAllGroupsCollector`. This sets the initial allocation size for the internal int set and group list to 128.

  Parameters:
    `groupField` - The field to group by

Method Detail

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

### getGroups

    public Collection<String> getGroups()

  Returns the group values

  This is an unordered collections of group values. For each group that matched the query there is a `BytesRef` representing a group value.

  Specified by:
    `getGroups` in class `AbstractAllGroupsCollector<String>`
  Returns:
    the group values

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

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