SortComparatorpublic abstract class SortComparator extends Object implements SortComparatorSourceAbstract base class for sorting hits returned by a Query.
This class should only be used if the other SortField
types (SCORE, DOC, STRING, INT, FLOAT) do not provide an
adequate sorting. It maintains an internal cache of values which
could be quite large. The cache is an array of Comparable,
one for each document in the index. There is a distinct
Comparable for each unique term in the field - if
some documents have the same term in the field, the cache
array will have entries which reference the same Comparable.
Created: Apr 21, 2004 5:08:38 PM |
Methods Summary |
---|
protected abstract java.lang.Comparable | getComparable(java.lang.String termtext)Returns an object which, when sorted according to natural order,
will order the Term values in the correct order.
For example, if the Terms contained integer values, this method
would return new Integer(termtext) . Note that this
might not always be the most efficient implementation - for this
particular example, a better implementation might be to make a
ScoreDocLookupComparator that uses an internal lookup table of int.
| public org.apache.lucene.search.ScoreDocComparator | newComparator(org.apache.lucene.index.IndexReader reader, java.lang.String fieldname)
final String field = fieldname.intern();
final Comparable[] cachedValues = FieldCache.DEFAULT.getCustom (reader, field, SortComparator.this);
return new ScoreDocComparator() {
public int compare (ScoreDoc i, ScoreDoc j) {
return cachedValues[i.doc].compareTo (cachedValues[j.doc]);
}
public Comparable sortValue (ScoreDoc i) {
return cachedValues[i.doc];
}
public int sortType(){
return SortField.CUSTOM;
}
};
|
|