org.apache.lucene.search.grouping

## Class AbstractAllGroupHeadsCollector<GH extends AbstractAllGroupHeadsCollector.GroupHead>

- java.lang.Object
- - org.apache.lucene.search.Collector
  - - org.apache.lucene.search.grouping.AbstractAllGroupHeadsCollector<GH>

- Direct Known Subclasses:
    FunctionAllGroupHeadsCollector, TermAllGroupHeadsCollector

      public abstract class AbstractAllGroupHeadsCollector<GH extends AbstractAllGroupHeadsCollector.GroupHead>
      extends Collector

  This collector specializes in collecting the most relevant document (group head) for each group that match the query.
  WARNING: This API is experimental and might change in incompatible ways in the next release.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `AbstractAllGroupHeadsCollector.GroupHead<GROUP_VALUE_TYPE>` Represents a group head.
    `protected class` | `AbstractAllGroupHeadsCollector.TemporalResult` Contains the result of group head retrieval.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected int` | `compIDXEnd`
    `protected int[]` | `reversed`
    `protected AbstractAllGroupHeadsCollector.TemporalResult` | `temporalResult`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `AbstractAllGroupHeadsCollector(int numberOfSorts)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `acceptsDocsOutOfOrder()`
    `void` | `collect(int doc)`
    `protected abstract Collection<GH>` | `getCollectedGroupHeads()` Returns the collected group heads.
    `int` | `groupHeadsSize()`
    `protected abstract void` | `retrieveGroupHeadAndAddIfNotExist(int doc)` Returns the group head and puts it into `temporalResult`.
    `int[]` | `retrieveGroupHeads()`
    `FixedBitSet` | `retrieveGroupHeads(int maxDoc)`

    - ### Methods inherited from class org.apache.lucene.search.Collector

      `setNextReader, setScorer`

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

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

- - ### Field Detail

    - #### reversed

          protected final int[] reversed

    - #### compIDXEnd

          protected final int compIDXEnd

    - #### temporalResult

          protected final AbstractAllGroupHeadsCollector.TemporalResult temporalResult

  - ### Constructor Detail

    - #### AbstractAllGroupHeadsCollector

          protected AbstractAllGroupHeadsCollector(int numberOfSorts)

  - ### Method Detail

    - #### retrieveGroupHeads

          public FixedBitSet retrieveGroupHeads(int maxDoc)

      Parameters:
        `maxDoc` - The maxDoc of the top level `IndexReader`.
      Returns:
        an `FixedBitSet` containing all group heads.

    - #### retrieveGroupHeads

          public int[] retrieveGroupHeads()

      Returns:
        an int array containing all group heads. The size of the array is equal to number of collected unique groups.

    - #### groupHeadsSize

          public int groupHeadsSize()

      Returns:
        the number of group heads found for a query.

    - #### retrieveGroupHeadAndAddIfNotExist

          protected abstract void retrieveGroupHeadAndAddIfNotExist(int doc)
                                                             throws IOException

      Returns the group head and puts it into `temporalResult`. If the group head wasn't encountered before then it will be added to the collected group heads.

      The `AbstractAllGroupHeadsCollector.TemporalResult.stop` property will be `true` if the group head wasn't encountered before otherwise `false`.
      Parameters:
        `doc` - The document to retrieve the group head for.
      Throws:
        `IOException` - If I/O related errors occur

    - #### getCollectedGroupHeads

          protected abstract Collection<GH> getCollectedGroupHeads()

      Returns the collected group heads. Subsequent calls should return the same group heads.
      Returns:
        the collected group heads

    - #### collect

          public void collect(int doc)
                       throws IOException

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

    - #### acceptsDocsOutOfOrder

          public boolean acceptsDocsOutOfOrder()

      Specified by:
        `acceptsDocsOutOfOrder` in class `Collector`

Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.