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, collectRange, 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