public static final class FieldComparator.StringOrdValComparator extends FieldComparator<String>
FieldComparator.StringValComparator
, but it first resolves the string
to their relative ordinal positions (using the index
returned by FieldCache.getStringIndex(org.apache.lucene.index.IndexReader, java.lang.String)
), and
does most comparisons using the ordinals. For medium
to large results, this comparator will be much faster
than FieldComparator.StringValComparator
. For very small
result sets it may be slower.FieldComparator.ByteComparator, FieldComparator.DocComparator, FieldComparator.DoubleComparator, FieldComparator.FloatComparator, FieldComparator.IntComparator, FieldComparator.LongComparator, FieldComparator.NumericComparator<T extends Number>, FieldComparator.RelevanceComparator, FieldComparator.ShortComparator, FieldComparator.StringComparatorLocale, FieldComparator.StringOrdValComparator, FieldComparator.StringValComparator
Constructor and Description |
---|
FieldComparator.StringOrdValComparator(int numHits,
String field,
int sortPos,
boolean reversed) |
Modifier and Type | Method and Description |
---|---|
int |
compare(int slot1,
int slot2)
Compare hit at slot1 with hit at slot2.
|
int |
compareBottom(int doc)
Compare the bottom of the queue with doc.
|
int |
compareValues(String val1,
String val2)
Returns -1 if first is less than second.
|
void |
copy(int slot,
int doc)
This method is called when a new hit is competitive.
|
int |
getBottomSlot() |
String |
getField() |
String[] |
getValues() |
void |
setBottom(int bottom)
Set the bottom slot, ie the "weakest" (sorted last)
entry in the queue.
|
void |
setNextReader(IndexReader reader,
int docBase)
Set a new Reader.
|
String |
value(int slot)
Return the actual value in the slot.
|
binarySearch, binarySearch, setScorer
public FieldComparator.StringOrdValComparator(int numHits, String field, int sortPos, boolean reversed)
public int compare(int slot1, int slot2)
FieldComparator
compare
in class FieldComparator<String>
slot1
- first slot to compareslot2
- second slot to comparepublic int compareBottom(int doc)
FieldComparator
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).
compareBottom
in class FieldComparator<String>
doc
- that was hitpublic void copy(int slot, int doc)
FieldComparator
copy
in class FieldComparator<String>
slot
- which slot to copy the hit todoc
- docID relative to current readerpublic void setNextReader(IndexReader reader, int docBase) throws IOException
FieldComparator
setNextReader
in class FieldComparator<String>
reader
- current readerdocBase
- docBase of this readerIOException
public void setBottom(int bottom)
FieldComparator
FieldComparator.compareBottom(int)
is
called, you should compare against this slot. This
will always be called before FieldComparator.compareBottom(int)
.setBottom
in class FieldComparator<String>
bottom
- the currently weakest (sorted last) slot in the queuepublic String value(int slot)
FieldComparator
value
in class FieldComparator<String>
slot
- the valuepublic int compareValues(String val1, String val2)
FieldComparator
compareValues
in class FieldComparator<String>
public String[] getValues()
public int getBottomSlot()
public String getField()