FileDocCategorySizeDatePackage
SortComparator.javaAPI DocApache Lucene 1.4.32322Thu Sep 30 21:20:16 BST 2004org.apache.lucene.search

SortComparator

public abstract class SortComparator extends Object implements SortComparatorSource
Abstract 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

author
Tim Jones
version
$Id: SortComparator.java,v 1.2.2.1 2004/09/30 19:20:16 dnaber Exp $
since
1.4

Fields Summary
Constructors Summary
Methods Summary
protected abstract java.lang.ComparablegetComparable(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.

param
termtext The textual value of the term.
return
An object representing termtext that sorts according to the natural order of termtext.
see
Comparable
see
ScoreDocComparator

public org.apache.lucene.search.ScoreDocComparatornewComparator(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;
      }
    };