public abstract class FieldComparator<T> extends Object
TopFieldCollector.  The concrete public FieldComparator
 classes here correspond to the SortField types.
 The document IDs passed to these methods must only move forwards, since they are using doc values iterators to retrieve sort values.
This API is designed to achieve high performance
 sorting, by exposing a tight interaction with FieldValueHitQueue as it visits hits.  Whenever a hit is
 competitive, it's enrolled into a virtual slot, which is
 an int ranging from 0 to numHits-1. Segment transitions are
 handled by creating a dedicated per-segment
 LeafFieldComparator which also needs to interact
 with the FieldValueHitQueue but can optimize based
 on the segment to collect.
The following functions need to be implemented
compare(int, int) Compare a hit at 'slot a'
       with hit 'slot b'.
 
  setTopValue(T) This method is called by
       TopFieldCollector to notify the
       FieldComparator of the top most value, which is
       used by future calls to
       LeafFieldComparator.compareTop(int).
 
  getLeafComparator(org.apache.lucene.index.LeafReaderContext) Invoked
       when the search is switching to the next segment.
       You may need to update internal state of the
       comparator, for example retrieving new values from
       DocValues.
  value(int) Return the sort value stored in
       the specified slot.  This is only called at the end
       of the search, in order to populate FieldDoc.fields when returning the top results.
 LeafFieldComparator| Modifier and Type | Class and Description | 
|---|---|
| static class  | FieldComparator.DocComparatorSorts by ascending docID | 
| static class  | FieldComparator.DoubleComparatorParses field's values as double (using  LeafReader.getNumericDocValues(java.lang.String)and sorts by ascending value | 
| static class  | FieldComparator.FloatComparatorParses field's values as float (using  LeafReader.getNumericDocValues(String)and sorts by ascending value | 
| static class  | FieldComparator.IntComparatorParses field's values as int (using  LeafReader.getNumericDocValues(String)and sorts by ascending value | 
| static class  | FieldComparator.LongComparatorParses field's values as long (using  LeafReader.getNumericDocValues(String)and sorts by ascending value | 
| static class  | FieldComparator.NumericComparator<T extends Number>Base FieldComparator class for numeric types | 
| static class  | FieldComparator.RelevanceComparatorSorts by descending relevance. | 
| static class  | FieldComparator.TermOrdValComparatorSorts by field's natural Term sort order, using
  ordinals. | 
| static class  | FieldComparator.TermValComparatorSorts by field's natural Term sort order. | 
| Constructor and Description | 
|---|
| FieldComparator() | 
| Modifier and Type | Method and Description | 
|---|---|
| abstract int | compare(int slot1,
       int slot2)Compare hit at slot1 with hit at slot2. | 
| int | compareValues(T first,
             T second)Returns a negative integer if first is less than second,
  0 if they are equal and a positive integer otherwise. | 
| abstract LeafFieldComparator | getLeafComparator(LeafReaderContext context)Get a per-segment  LeafFieldComparatorto collect the givenLeafReaderContext. | 
| abstract void | setTopValue(T value)Record the top value, for future calls to  LeafFieldComparator.compareTop(int). | 
| abstract T | value(int slot)Return the actual value in the slot. | 
public abstract int compare(int slot1,
                            int slot2)
slot1 - first slot to compareslot2 - second slot to compareN < 0 if slot2's value is sorted after
 slot1, any N > 0 if the slot2's value is sorted before
 slot1 and 0 if they are equalpublic abstract void setTopValue(T value)
LeafFieldComparator.compareTop(int).  This is only called for searches that
 use searchAfter (deep paging), and is called before any
 calls to getLeafComparator(LeafReaderContext).public abstract T value(int slot)
slot - the valuepublic abstract LeafFieldComparator getLeafComparator(LeafReaderContext context) throws IOException
LeafFieldComparator to collect the given
 LeafReaderContext. All docIDs supplied to
 this LeafFieldComparator are relative to the current reader (you
 must add docBase if you need to map it to a top-level docID).context - current reader contextIOException - if there is a low-level IO errorpublic int compareValues(T first, T second)
Copyright © 2000-2018 Apache Software Foundation. All Rights Reserved.