Class DocComparator.DocLeafComparator

  • All Implemented Interfaces:
    LeafFieldComparator
    Enclosing class:
    DocComparator

    private class DocComparator.DocLeafComparator
    extends java.lang.Object
    implements LeafFieldComparator
    DocLeafComparator with skipping functionality. When sort by _doc asc, after collecting top N matches and enough hits, the comparator can skip all the following documents. When sort by _doc asc and "top" document is set after which search should start, the comparator provides an iterator that can quickly skip to the desired "top" document.
    • Field Detail

      • docBase

        private final int docBase
      • minDoc

        private final int minDoc
      • maxDoc

        private final int maxDoc
    • Constructor Detail

    • Method Detail

      • compareBottom

        public int compareBottom​(int doc)
        Description copied from interface: LeafFieldComparator
        Compare the bottom of the queue with this doc. This will only invoked after setBottom has been called. This should return the same result as FieldComparator.compare(int,int)} as if bottom were slot1 and the new document were slot 2.

        For a search that hits many results, this method will be the hotspot (invoked by far the most frequently).

        Specified by:
        compareBottom in interface LeafFieldComparator
        Parameters:
        doc - that was hit
        Returns:
        any N < 0 if the doc's value is sorted after the bottom entry (not competitive), any N > 0 if the doc's value is sorted before the bottom entry and 0 if they are equal.
      • compareTop

        public int compareTop​(int doc)
        Description copied from interface: LeafFieldComparator
        Compare the top value with this doc. This will only invoked after setTopValue has been called. This should return the same result as FieldComparator.compare(int,int)} as if topValue were slot1 and the new document were slot 2. This is only called for searches that use searchAfter (deep paging).
        Specified by:
        compareTop in interface LeafFieldComparator
        Parameters:
        doc - that was hit
        Returns:
        any N < 0 if the doc's value is sorted after the top entry (not competitive), any N > 0 if the doc's value is sorted before the top entry and 0 if they are equal.
      • copy

        public void copy​(int slot,
                         int doc)
                  throws java.io.IOException
        Description copied from interface: LeafFieldComparator
        This method is called when a new hit is competitive. You should copy any state associated with this document that will be required for future comparisons, into the specified slot.
        Specified by:
        copy in interface LeafFieldComparator
        Parameters:
        slot - which slot to copy the hit to
        doc - docID relative to current reader
        Throws:
        java.io.IOException
      • setScorer

        public void setScorer​(Scorable scorer)
                       throws java.io.IOException
        Description copied from interface: LeafFieldComparator
        Sets the Scorer to use in case a document's score is needed.
        Specified by:
        setScorer in interface LeafFieldComparator
        Parameters:
        scorer - Scorer instance that you should use to obtain the current hit's score, if necessary.
        Throws:
        java.io.IOException
      • competitiveIterator

        public DocIdSetIterator competitiveIterator()
        Description copied from interface: LeafFieldComparator
        Returns a competitive iterator
        Specified by:
        competitiveIterator in interface LeafFieldComparator
        Returns:
        an iterator over competitive docs that are stronger than already collected docs or null if such an iterator is not available for the current comparator or segment.
      • setHitsThresholdReached

        public void setHitsThresholdReached()
        Description copied from interface: LeafFieldComparator
        Informs this leaf comparator that hits threshold is reached. This method is called from a collector when hits threshold is reached.
        Specified by:
        setHitsThresholdReached in interface LeafFieldComparator
      • updateIterator

        private void updateIterator()