Interface IndexSorter
-
- All Known Implementing Classes:
IndexSorter.DoubleSorter
,IndexSorter.FloatSorter
,IndexSorter.IntSorter
,IndexSorter.LongSorter
,IndexSorter.StringSorter
public interface IndexSorter
Handles how documents should be sorted in an index, both within a segment and between segments.Implementers must provide the following methods:
getDocComparator(LeafReader,int)
- an object that determines how documents within a segment are to be sortedgetComparableProviders(List)
- an array of objects that return a sortable long value per document and segmentgetProviderName()
- the SPI-registered name of aSortFieldProvider
to serialize the sortThe companion
SortFieldProvider
should be registered with SPI viaMETA-INF/services
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static interface
IndexSorter.ComparableProvider
Used for sorting documents across segmentsstatic interface
IndexSorter.DocComparator
A comparator of doc IDs, used for sorting documents within a segmentstatic class
IndexSorter.DoubleSorter
Sorts documents based on double values from a NumericDocValues instancestatic class
IndexSorter.FloatSorter
Sorts documents based on float values from a NumericDocValues instancestatic class
IndexSorter.IntSorter
Sorts documents based on integer values from a NumericDocValues instancestatic class
IndexSorter.LongSorter
Sorts documents based on long values from a NumericDocValues instancestatic interface
IndexSorter.NumericDocValuesProvider
Provide a NumericDocValues instance for a LeafReaderstatic interface
IndexSorter.SortedDocValuesProvider
Provide a SortedDocValues instance for a LeafReaderstatic class
IndexSorter.StringSorter
Sorts documents based on terms from a SortedDocValues instance
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description IndexSorter.ComparableProvider[]
getComparableProviders(List<? extends LeafReader> readers)
Get an array ofIndexSorter.ComparableProvider
, one per segment, for merge sorting documents in different segmentsIndexSorter.DocComparator
getDocComparator(LeafReader reader, int maxDoc)
Get a comparator that determines the sort order of docs within a single Reader.String
getProviderName()
The SPI-registered name of aSortFieldProvider
that will deserialize the parent SortField
-
-
-
Method Detail
-
getComparableProviders
IndexSorter.ComparableProvider[] getComparableProviders(List<? extends LeafReader> readers) throws IOException
Get an array ofIndexSorter.ComparableProvider
, one per segment, for merge sorting documents in different segments- Parameters:
readers
- the readers to be merged- Throws:
IOException
-
getDocComparator
IndexSorter.DocComparator getDocComparator(LeafReader reader, int maxDoc) throws IOException
Get a comparator that determines the sort order of docs within a single Reader.NB We cannot simply use the
FieldComparator
API because it requires docIDs to be sent in-order. The default implementations allocate array[maxDoc] to hold native values for comparison, but 1) they are transient (only alive while sorting this one segment) and 2) in the typical index sorting case, they are only used to sort newly flushed segments, which will be smaller than merged segments- Parameters:
reader
- the Reader to sortmaxDoc
- the number of documents in the Reader- Throws:
IOException
-
getProviderName
String getProviderName()
The SPI-registered name of aSortFieldProvider
that will deserialize the parent SortField
-
-