Class CollapsingTopDocsCollector<T>

  • All Implemented Interfaces:
    org.apache.lucene.search.Collector, org.apache.lucene.search.LeafCollector

    public final class CollapsingTopDocsCollector<T>
    extends org.apache.lucene.search.grouping.FirstPassGroupingCollector<T>
    A collector that groups documents based on field values and returns CollapseTopFieldDocs output. The collapsing is done in a single pass by selecting only the top sorted document per collapse key. The value used for the collapse key of each group can be found in CollapseTopFieldDocs.collapseValues.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected java.lang.String collapseField  
      protected org.apache.lucene.search.Scorer scorer  
      protected org.apache.lucene.search.Sort sort  
      • Fields inherited from class org.apache.lucene.search.grouping.FirstPassGroupingCollector

        orderedGroups
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void collect​(int doc)  
      static CollapsingTopDocsCollector<?> createKeyword​(java.lang.String collapseField, org.apache.lucene.search.Sort sort, int topN, boolean trackMaxScore)
      Create a collapsing top docs collector on a SortedDocValues field.
      static CollapsingTopDocsCollector<?> createNumeric​(java.lang.String collapseField, org.apache.lucene.search.Sort sort, int topN, boolean trackMaxScore)
      Create a collapsing top docs collector on a NumericDocValues field.
      CollapseTopFieldDocs getTopDocs()
      Transform FirstPassGroupingCollector.getTopGroups(int, boolean) output in CollapseTopFieldDocs.
      boolean needsScores()  
      void setScorer​(org.apache.lucene.search.Scorer scorer)  
      • Methods inherited from class org.apache.lucene.search.grouping.FirstPassGroupingCollector

        doSetNextReader, getGroupSelector, getTopGroups
      • 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
    • Field Detail

      • collapseField

        protected final java.lang.String collapseField
      • sort

        protected final org.apache.lucene.search.Sort sort
      • scorer

        protected org.apache.lucene.search.Scorer scorer
    • Method Detail

      • getTopDocs

        public CollapseTopFieldDocs getTopDocs()
                                        throws java.io.IOException
        Transform FirstPassGroupingCollector.getTopGroups(int, boolean) output in CollapseTopFieldDocs. The collapsing needs only one pass so we can get the final top docs at the end of the first pass.
        Throws:
        java.io.IOException
      • needsScores

        public boolean needsScores()
        Specified by:
        needsScores in interface org.apache.lucene.search.Collector
        Overrides:
        needsScores in class org.apache.lucene.search.grouping.FirstPassGroupingCollector<T>
      • setScorer

        public void setScorer​(org.apache.lucene.search.Scorer scorer)
                       throws java.io.IOException
        Specified by:
        setScorer in interface org.apache.lucene.search.LeafCollector
        Overrides:
        setScorer in class org.apache.lucene.search.grouping.FirstPassGroupingCollector<T>
        Throws:
        java.io.IOException
      • collect

        public void collect​(int doc)
                     throws java.io.IOException
        Specified by:
        collect in interface org.apache.lucene.search.LeafCollector
        Overrides:
        collect in class org.apache.lucene.search.grouping.FirstPassGroupingCollector<T>
        Throws:
        java.io.IOException
      • createNumeric

        public static CollapsingTopDocsCollector<?> createNumeric​(java.lang.String collapseField,
                                                                  org.apache.lucene.search.Sort sort,
                                                                  int topN,
                                                                  boolean trackMaxScore)
        Create a collapsing top docs collector on a NumericDocValues field. It accepts also SortedNumericDocValues field but the collect will fail with an IllegalStateException if a document contains more than one value for the field.
        Parameters:
        collapseField - The sort field used to group documents.
        sort - The Sort used to sort the collapsed hits. The collapsing keeps only the top sorted document per collapsed key. This must be non-null, ie, if you want to groupSort by relevance use Sort.RELEVANCE.
        topN - How many top groups to keep.
      • createKeyword

        public static CollapsingTopDocsCollector<?> createKeyword​(java.lang.String collapseField,
                                                                  org.apache.lucene.search.Sort sort,
                                                                  int topN,
                                                                  boolean trackMaxScore)
        Create a collapsing top docs collector on a SortedDocValues field. It accepts also SortedSetDocValues field but the collect will fail with an IllegalStateException if a document contains more than one value for the field.
        Parameters:
        collapseField - The sort field used to group documents.
        sort - The Sort used to sort the collapsed hits. The collapsing keeps only the top sorted document per collapsed key. This must be non-null, ie, if you want to groupSort by relevance use Sort.RELEVANCE.
        topN - How many top groups to keep.