Package org.apache.lucene.search.grouping

# Class GroupFacetCollector

java.lang.Object
org.apache.lucene.search.SimpleCollector
org.apache.lucene.search.grouping.GroupFacetCollector

All Implemented Interfaces:
  `Collector`, `LeafCollector`

Direct Known Subclasses:
  `TermGroupFacetCollector`

public abstract class GroupFacetCollector extends SimpleCollector
Base class for computing grouped facets.

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

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static final record`
  `GroupFacetCollector.FacetEntry`
  Represents a facet entry with a value and a count.
  `static class`
  `GroupFacetCollector.GroupedFacetResult`
  The grouped facet result.
  `protected static class`
  `GroupFacetCollector.SegmentResult`
  Contains the local grouped segment counts for a particular segment.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected int`
  `endFacetOrd`
  `protected final String`
  `facetField`
  `protected final BytesRef`
  `facetPrefix`
  `protected final String`
  `groupField`
  `protected int[]`
  `segmentFacetCounts`
  `protected final List<GroupFacetCollector.SegmentResult>`
  `segmentResults`
  `protected int`
  `segmentTotalCount`
  `protected int`
  `startFacetOrd`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `GroupFacetCollector(String groupField, String facetField, BytesRef facetPrefix)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected abstract GroupFacetCollector.SegmentResult`
  `createSegmentResult()`
  `void`
  `finish()`
  `GroupFacetCollector.GroupedFacetResult`
  `mergeSegmentResults(int size, int minCount, boolean orderByCount)`
  Returns grouped facet results that were computed over zero or more segments.
  `ScoreMode`
  `scoreMode()`
  `void`
  `setScorer(Scorable scorer)`

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

  `collect, doSetNextReader, 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`

- ## Field Details

  - ### groupField

    protected final String groupField

  - ### facetField

    protected final String facetField

  - ### facetPrefix

    protected final BytesRef facetPrefix

  - ### segmentResults

    protected final List<GroupFacetCollector.SegmentResult> segmentResults

  - ### segmentFacetCounts

    protected int[] segmentFacetCounts

  - ### segmentTotalCount

    protected int segmentTotalCount

  - ### startFacetOrd

    protected int startFacetOrd

  - ### endFacetOrd

    protected int endFacetOrd

- ## Constructor Details

  - ### GroupFacetCollector

    protected GroupFacetCollector(String groupField, String facetField, BytesRef facetPrefix)

- ## Method Details

  - ### mergeSegmentResults

    public GroupFacetCollector.GroupedFacetResult mergeSegmentResults(int size, int minCount, boolean orderByCount) throws IOException
    Returns grouped facet results that were computed over zero or more segments. Grouped facet counts are merged from zero or more segment results.
    Parameters:
      `size` - The total number of facets to include. This is typically offset + limit
      `minCount` - The minimum count a facet entry should have to be included in the grouped facet result
      `orderByCount` - Whether to sort the facet entries by facet entry count. If `false` then the facets are sorted lexicographically in ascending order.
    Returns:
      grouped facet results
    Throws:
      `IOException` - If I/O related errors occur during merging segment grouped facet counts.

  - ### finish

    public void finish() throws IOException
    Throws:
      `IOException`

  - ### createSegmentResult

    protected abstract GroupFacetCollector.SegmentResult createSegmentResult() throws IOException
    Throws:
      `IOException`

  - ### setScorer

    public void setScorer(Scorable scorer) throws IOException
    Specified by:
      `setScorer` in interface `LeafCollector`
    Overrides:
      `setScorer` in class `SimpleCollector`
    Throws:
      `IOException`

  - ### scoreMode

    public ScoreMode scoreMode()