Class AbstractFirstPassGroupingCollector<GROUP_VALUE_TYPE>

  • Direct Known Subclasses:
    TermFirstPassGroupingCollector

    public abstract class AbstractFirstPassGroupingCollector<GROUP_VALUE_TYPE>
    extends org.apache.lucene.search.Collector
    FirstPassGroupingCollector is the first of two passes necessary to collect grouped hits. This pass gathers the top N sorted groups. Concrete subclasses define what a group is and how it is internally collected.

    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.
    • Constructor Detail

      • AbstractFirstPassGroupingCollector

        public AbstractFirstPassGroupingCollector​(org.apache.lucene.search.Sort groupSort,
                                                  int topNGroups)
                                           throws IOException
        Create the first pass collector.
        Parameters:
        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.
        Throws:
        IOException - If I/O related errors occur
    • Method Detail

      • getTopGroups

        public Collection<SearchGroup<GROUP_VALUE_TYPE>> getTopGroups​(int groupOffset,
                                                                      boolean fillFields)
        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
        fillFields - Whether to fill to SearchGroup.sortValues
        Returns:
        top groups, starting from offset
      • setScorer

        public void setScorer​(org.apache.lucene.search.Scorer scorer)
                       throws IOException
        Specified by:
        setScorer in class org.apache.lucene.search.Collector
        Throws:
        IOException
      • collect

        public void collect​(int doc)
                     throws IOException
        Specified by:
        collect in class org.apache.lucene.search.Collector
        Throws:
        IOException
      • acceptsDocsOutOfOrder

        public boolean acceptsDocsOutOfOrder()
        Specified by:
        acceptsDocsOutOfOrder in class org.apache.lucene.search.Collector
      • setNextReader

        public void setNextReader​(org.apache.lucene.index.IndexReader reader,
                                  int docBase)
                           throws IOException
        Specified by:
        setNextReader in class org.apache.lucene.search.Collector
        Throws:
        IOException
      • getDocGroupValue

        protected abstract GROUP_VALUE_TYPE getDocGroupValue​(int doc)
        Returns the group value for the specified doc.
        Parameters:
        doc - The specified doc
        Returns:
        the group value for the specified doc
      • copyDocGroupValue

        protected abstract GROUP_VALUE_TYPE copyDocGroupValue​(GROUP_VALUE_TYPE groupValue,
                                                              GROUP_VALUE_TYPE reuse)
        Returns a copy of the specified group value by creating a new instance and copying the value from the specified groupValue in the new instance. Or optionally the reuse argument can be used to copy the group value in.
        Parameters:
        groupValue - The group value to copy
        reuse - Optionally a reuse instance to prevent a new instance creation
        Returns:
        a copy of the specified group value