org.apache.lucene.search.grouping

## Class AbstractSecondPassGroupingCollector<GROUP_VALUE_TYPE>

- java.lang.Object
- - org.apache.lucene.search.Collector
  - - org.apache.lucene.search.grouping.AbstractSecondPassGroupingCollector<GROUP_VALUE_TYPE>

Direct Known Subclasses:
  FunctionSecondPassGroupingCollector, TermSecondPassGroupingCollector

    public abstract class AbstractSecondPassGroupingCollector<GROUP_VALUE_TYPE>
    extends Collector

SecondPassGroupingCollector is the second of two passes necessary to collect grouped docs. This pass gathers the top N documents per top group computed from the first pass. Concrete subclasses define what a group is and how it is internally collected.

See `org.apache.lucene.search.grouping` for more details including a full code example.

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

### Nested Class Summary

Nested Classes
`class` `AbstractSecondPassGroupingCollector.SearchGroupDocs<GROUP_VALUE_TYPE>`

### Field Summary

Fields
`protected AbstractSecondPassGroupingCollector.SearchGroupDocs<GROUP_VALUE_TYPE>[]` `groupDocs`
`protected Map<GROUP_VALUE_TYPE,AbstractSecondPassGroupingCollector.SearchGroupDocs<GROUP_VALUE_TYPE>>` `groupMap`

### Constructor Summary

Constructors
Constructor and Description
`AbstractSecondPassGroupingCollector(Collection<SearchGroup<GROUP_VALUE_TYPE>> groups, Sort groupSort, Sort withinGroupSort, int maxDocsPerGroup, boolean getScores, boolean getMaxScores, boolean fillSortFields)`

### Method Summary

Methods
`boolean` `acceptsDocsOutOfOrder()`
`void` `collect(int doc)`
`TopGroups<GROUP_VALUE_TYPE>` `getTopGroups(int withinGroupOffset)`
`protected abstract AbstractSecondPassGroupingCollector.SearchGroupDocs<GROUP_VALUE_TYPE>` `retrieveGroup(int doc)` Returns the group the specified doc belongs to or `null` if no group could be retrieved.
`void` `setNextReader(AtomicReaderContext readerContext)`
`void` `setScorer(Scorer scorer)`

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

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

### Field Detail

#### groupMap

    protected final Map<GROUP_VALUE_TYPE,AbstractSecondPassGroupingCollector.SearchGroupDocs<GROUP_VALUE_TYPE>> groupMap

#### groupDocs

    protected AbstractSecondPassGroupingCollector.SearchGroupDocs<GROUP_VALUE_TYPE>[] groupDocs

### Constructor Detail

#### AbstractSecondPassGroupingCollector

    public AbstractSecondPassGroupingCollector(Collection<SearchGroup<GROUP_VALUE_TYPE>> groups,
                                       Sort groupSort,
                                       Sort withinGroupSort,
                                       int maxDocsPerGroup,
                                       boolean getScores,
                                       boolean getMaxScores,
                                       boolean fillSortFields)
                                        throws IOException

Throws:
  `IOException`

### Method Detail

#### setScorer

    public void setScorer(Scorer scorer)
                   throws IOException

Specified by:
  `setScorer` in class `Collector`
Throws:
  `IOException`

#### collect

    public void collect(int doc)
                 throws IOException

Specified by:
  `collect` in class `Collector`
Throws:
  `IOException`

#### retrieveGroup

    protected abstract AbstractSecondPassGroupingCollector.SearchGroupDocs<GROUP_VALUE_TYPE> retrieveGroup(int doc)
                                                                                                    throws IOException

Returns the group the specified doc belongs to or `null` if no group could be retrieved.

Parameters:
  `doc` - The specified doc
Returns:
  the group the specified doc belongs to or `null` if no group could be retrieved
Throws:
  `IOException` - If an I/O related error occurred

#### setNextReader

    public void setNextReader(AtomicReaderContext readerContext)
                       throws IOException

Specified by:
  `setNextReader` in class `Collector`
Throws:
  `IOException`

#### acceptsDocsOutOfOrder

    public boolean acceptsDocsOutOfOrder()

Specified by:
  `acceptsDocsOutOfOrder` in class `Collector`

#### getTopGroups

    public TopGroups<GROUP_VALUE_TYPE> getTopGroups(int withinGroupOffset)