|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.lucene.search.FieldComparator<T>
public abstract class FieldComparator<T>
Expert: a FieldComparator compares hits so as to determine their
sort order when collecting the top results with TopFieldCollector
. The concrete public FieldComparator
classes here correspond to the SortField types.
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. The FieldComparator
is made aware of segment transitions
during searching in case any internal state it's tracking
needs to be recomputed during these transitions.
A comparator must define these functions:
compare(int, int)
Compare a hit at 'slot a'
with hit 'slot b'.
setBottom(int)
This method is called by
FieldValueHitQueue
to notify the
FieldComparator of the current weakest ("bottom")
slot. Note that this slot may not hold the weakest
value according to your comparator, in cases where
your comparator is not the primary one (ie, is only
used to break ties from the comparators before it).
compareBottom(int)
Compare a new hit (docID)
against the "weakest" (bottom) entry in the queue.
copy(int, int)
Installs a new hit into the
priority queue. The FieldValueHitQueue
calls this method when a new hit is competitive.
setNextReader(org.apache.lucene.index.IndexReader, int)
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
the FieldCache
.
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.
Field Summary | |
---|---|
protected T |
missingValue
|
Constructor Summary | |
---|---|
FieldComparator()
|
Method Summary | |
---|---|
protected static int |
binarySearch(String[] a,
String key)
|
protected static int |
binarySearch(String[] a,
String key,
int low,
int high)
|
abstract int |
compare(int slot1,
int slot2)
Compare hit at slot1 with hit at slot2. |
abstract int |
compareBottom(int doc)
Compare the bottom of the queue with doc. |
int |
compareValues(T first,
T second)
Returns -1 if first is less than second. |
abstract void |
copy(int slot,
int doc)
This method is called when a new hit is competitive. |
abstract void |
setBottom(int slot)
Set the bottom slot, ie the "weakest" (sorted last) entry in the queue. |
FieldComparator<T> |
setMissingValue(T missingValue)
Set a default sorting value for documents which lacks one |
abstract void |
setNextReader(IndexReader reader,
int docBase)
Set a new Reader. |
void |
setScorer(Scorer scorer)
Sets the Scorer to use in case a document's score is needed. |
abstract T |
value(int slot)
Return the actual value in the slot. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected T missingValue
Constructor Detail |
---|
public FieldComparator()
Method Detail |
---|
public FieldComparator<T> setMissingValue(T missingValue)
public abstract int compare(int slot1, int slot2)
slot1
- first slot to compareslot2
- second slot to compare
public abstract void setBottom(int slot)
compareBottom(int)
is
called, you should compare against this slot. This
will always be called before compareBottom(int)
.
slot
- the currently weakest (sorted last) slot in the queuepublic abstract int compareBottom(int doc) throws IOException
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).
doc
- that was hit
IOException
public abstract void copy(int slot, int doc) throws IOException
slot
- which slot to copy the hit todoc
- docID relative to current reader
IOException
public abstract void setNextReader(IndexReader reader, int docBase) throws IOException
reader
- current readerdocBase
- docBase of this reader
IOException
IOException
public void setScorer(Scorer scorer)
scorer
- Scorer instance that you should use to
obtain the current hit's score, if necessary.public abstract T value(int slot)
slot
- the value
public int compareValues(T first, T second)
protected static final int binarySearch(String[] a, String key)
protected static final int binarySearch(String[] a, String key, int low, int high)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |