Package org.apache.lucene.search.grouping

# Class FirstPassGroupingCollector<T>

java.lang.Object
org.apache.lucene.search.SimpleCollector
org.apache.lucene.search.grouping.FirstPassGroupingCollector<T>

All Implemented Interfaces:
  `Collector`, `LeafCollector`

public class FirstPassGroupingCollector<T> extends SimpleCollector
FirstPassGroupingCollector is the first of two passes necessary to collect grouped hits. This pass gathers the top N sorted groups. Groups are defined by a `GroupSelector`

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.

## Field Summary

Fields
Modifier and Type
Field
Description
`protected TreeSet<CollectedSearchGroup<T>>`
`orderedGroups`

## Constructor Summary

Constructors
Constructor
Description
`FirstPassGroupingCollector(GroupSelector<T> groupSelector, Sort groupSort, int topNGroups)`
Create the first pass collector.

## Method Summary

Modifier and Type
Method
Description
`void`
`collect(int doc)`
`protected void`
`doSetNextReader(LeafReaderContext readerContext)`
`GroupSelector<T>`
`getGroupSelector()`
`Collection<SearchGroup<T>>`
`getTopGroups(int groupOffset)`
Returns top groups, starting from offset.
`ScoreMode`
`scoreMode()`
`void`
`setScorer(Scorable scorer)`

### Methods inherited from class org.apache.lucene.search.SimpleCollector

`getLeafCollector`

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

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

### Methods inherited from interface org.apache.lucene.search.Collector

`setWeight`

### Methods inherited from interface org.apache.lucene.search.LeafCollector

`collect, competitiveIterator, finish`

## Field Details

### orderedGroups

protected TreeSet<CollectedSearchGroup<T>> orderedGroups

NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

## Constructor Details

### FirstPassGroupingCollector

public FirstPassGroupingCollector(GroupSelector<T> groupSelector, Sort groupSort, int topNGroups)
Create the first pass collector.

Parameters:
  `groupSelector` - a GroupSelector used to defined groups
  `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.

## Method Details

### scoreMode

public ScoreMode scoreMode()

### getTopGroups

public Collection<SearchGroup<T>> getTopGroups(int groupOffset) throws IOException
Returns top groups, starting from offset. This may return null, if no groups were collected, or if the number of unique groups collected is <= offset.

Parameters:
  `groupOffset` - The offset in the collected groups
Returns:
  top groups, starting from offset
Throws:
  `IOException`

### setScorer

public void setScorer(Scorable scorer) throws IOException

Specified by:
  `setScorer` in interface `LeafCollector`
Overrides:
  `setScorer` in class `SimpleCollector`
Throws:
  `IOException`

### collect

public void collect(int doc) throws IOException

Specified by:
  `collect` in interface `LeafCollector`
Specified by:
  `collect` in class `SimpleCollector`
Throws:
  `IOException`

### doSetNextReader

protected void doSetNextReader(LeafReaderContext readerContext) throws IOException

Overrides:
  `doSetNextReader` in class `SimpleCollector`
Throws:
  `IOException`

### getGroupSelector

public GroupSelector<T> getGroupSelector()

Returns:
  the GroupSelector used for this Collector