Package org.apache.lucene.search.grouping

## Class GroupSelector<T>

- java.lang.Object
- - org.apache.lucene.search.grouping.GroupSelector<T>

- Type Parameters:
    `T` - the type of the group value
  Direct Known Subclasses:
    `DoubleRangeGroupSelector`, `LongRangeGroupSelector`, `TermGroupSelector`, `ValueSourceGroupSelector`

      public abstract class GroupSelector<T>
      extends Object

  Defines a group, for use by grouping collectors

  A GroupSelector acts as an iterator over documents. For each segment, clients should call `setNextReader(LeafReaderContext)`, and then `advanceTo(int)` for each matching document.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `GroupSelector.State` | What to do with the current value

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `GroupSelector()` |

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `abstract GroupSelector.State` | `advanceTo​(int doc)` | Advance the GroupSelector's iterator to the given document
    `abstract T` | `copyValue()` |
    `abstract T` | `currentValue()` | Get the group value of the current document
    `abstract void` | `setGroups​(Collection<SearchGroup<T>> groups)` | Set a restriction on the group values returned by this selector
    `abstract void` | `setNextReader​(LeafReaderContext readerContext)` | Set the LeafReaderContext
    `abstract void` | `setScorer​(Scorable scorer)` | Set the current Scorer

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

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

- - ### Constructor Detail

    - #### GroupSelector

          public GroupSelector()

  - ### Method Detail

    - #### setNextReader

          public abstract void setNextReader​(LeafReaderContext readerContext)
                                      throws IOException

      Set the LeafReaderContext
      Throws:
        `IOException`

    - #### setScorer

          public abstract void setScorer​(Scorable scorer)
                                  throws IOException

      Set the current Scorer
      Throws:
        `IOException`

    - #### advanceTo

          public abstract GroupSelector.State advanceTo​(int doc)
                                                 throws IOException

      Advance the GroupSelector's iterator to the given document
      Throws:
        `IOException`

    - #### currentValue

          public abstract T currentValue()
                                  throws IOException

      Get the group value of the current document

      N.B. this object may be reused, for a persistent version use `copyValue()`

      Throws:
        `IOException`

    - #### copyValue

          public abstract T copyValue()
                               throws IOException

      Returns:
        a copy of the group value of the current document
      Throws:
        `IOException`

    - #### setGroups

          public abstract void setGroups​(Collection<SearchGroup<T>> groups)

      Set a restriction on the group values returned by this selector

      If the selector is positioned on a document whose group value is not contained within this set, then `advanceTo(int)` will return `GroupSelector.State.SKIP`

      Parameters:
        `groups` - a set of `SearchGroup` objects to limit selections to