org.apache.lucene.search
Class SortField

java.lang.Object
  extended by org.apache.lucene.search.SortField
All Implemented Interfaces:
Serializable

public class SortField
extends Object
implements Serializable

Stores information about how to sort documents by terms in an individual field. Fields must be indexed in order to sort by them.

Created: Feb 11, 2004 1:25:29 PM

Since:
lucene 1.4
See Also:
Sort, Serialized Form

Field Summary
static int BYTE
          Sort using term values as encoded Bytes.
static int CUSTOM
          Sort using a custom Comparator.
static int DOC
          Sort by document number (index order).
static int DOUBLE
          Sort using term values as encoded Doubles.
static SortField FIELD_DOC
          Represents sorting by document number (index order).
static SortField FIELD_SCORE
          Represents sorting by document score (relevance).
static int FLOAT
          Sort using term values as encoded Floats.
static int INT
          Sort using term values as encoded Integers.
static int LONG
          Sort using term values as encoded Longs.
static int SCORE
          Sort by document score (relevance).
static int SHORT
          Sort using term values as encoded Shorts.
static int STRING
          Sort using term values as Strings.
static int STRING_VAL
          Sort using term values as Strings, but comparing by value (using String.compareTo) for all comparisons.
 
Constructor Summary
SortField(String field, FieldCache.Parser parser)
          Creates a sort by terms in the given field, parsed to numeric values using a custom FieldCache.Parser.
SortField(String field, FieldCache.Parser parser, boolean reverse)
          Creates a sort, possibly in reverse, by terms in the given field, parsed to numeric values using a custom FieldCache.Parser.
SortField(String field, FieldComparatorSource comparator)
          Creates a sort with a custom comparison function.
SortField(String field, FieldComparatorSource comparator, boolean reverse)
          Creates a sort, possibly in reverse, with a custom comparison function.
SortField(String field, int type)
          Creates a sort by terms in the given field with the type of term values explicitly given.
SortField(String field, int type, boolean reverse)
          Creates a sort, possibly in reverse, by terms in the given field with the type of term values explicitly given.
SortField(String field, Locale locale)
          Creates a sort by terms in the given field sorted according to the given locale.
SortField(String field, Locale locale, boolean reverse)
          Creates a sort, possibly in reverse, by terms in the given field sorted according to the given locale.
 
Method Summary
 boolean equals(Object o)
          Returns true if o is equal to this.
 FieldComparator<?> getComparator(int numHits, int sortPos)
          Returns the FieldComparator to use for sorting.
 FieldComparatorSource getComparatorSource()
          Returns the FieldComparatorSource used for custom sorting
 String getField()
          Returns the name of the field.
 Locale getLocale()
          Returns the Locale by which term values are interpreted.
 FieldCache.Parser getParser()
          Returns the instance of a FieldCache parser that fits to the given sort type.
 boolean getReverse()
          Returns whether the sort should be reversed.
 int getType()
          Returns the type of contents in the field.
 int hashCode()
          Returns true if o is equal to this.
 SortField setMissingValue(Object missingValue)
          Set a default sorting value for documents which lacks one
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

SCORE

public static final int SCORE
Sort by document score (relevance). Sort values are Float and higher values are at the front.

See Also:
Constant Field Values

DOC

public static final int DOC
Sort by document number (index order). Sort values are Integer and lower values are at the front.

See Also:
Constant Field Values

STRING

public static final int STRING
Sort using term values as Strings. Sort values are String and lower values are at the front.

See Also:
Constant Field Values

INT

public static final int INT
Sort using term values as encoded Integers. Sort values are Integer and lower values are at the front.

See Also:
Constant Field Values

FLOAT

public static final int FLOAT
Sort using term values as encoded Floats. Sort values are Float and lower values are at the front.

See Also:
Constant Field Values

LONG

public static final int LONG
Sort using term values as encoded Longs. Sort values are Long and lower values are at the front.

See Also:
Constant Field Values

DOUBLE

public static final int DOUBLE
Sort using term values as encoded Doubles. Sort values are Double and lower values are at the front.

See Also:
Constant Field Values

SHORT

public static final int SHORT
Sort using term values as encoded Shorts. Sort values are Short and lower values are at the front.

See Also:
Constant Field Values

CUSTOM

public static final int CUSTOM
Sort using a custom Comparator. Sort values are any Comparable and sorting is done according to natural order.

See Also:
Constant Field Values

BYTE

public static final int BYTE
Sort using term values as encoded Bytes. Sort values are Byte and lower values are at the front.

See Also:
Constant Field Values

STRING_VAL

public static final int STRING_VAL
Sort using term values as Strings, but comparing by value (using String.compareTo) for all comparisons. This is typically slower than STRING, which uses ordinals to do the sorting.

See Also:
Constant Field Values

FIELD_SCORE

public static final SortField FIELD_SCORE
Represents sorting by document score (relevance).


FIELD_DOC

public static final SortField FIELD_DOC
Represents sorting by document number (index order).

Constructor Detail

SortField

public SortField(String field,
                 int type)
Creates a sort by terms in the given field with the type of term values explicitly given.

Parameters:
field - Name of field to sort by. Can be null if type is SCORE or DOC.
type - Type of values in the terms.

SortField

public SortField(String field,
                 int type,
                 boolean reverse)
Creates a sort, possibly in reverse, by terms in the given field with the type of term values explicitly given.

Parameters:
field - Name of field to sort by. Can be null if type is SCORE or DOC.
type - Type of values in the terms.
reverse - True if natural order should be reversed.

SortField

public SortField(String field,
                 FieldCache.Parser parser)
Creates a sort by terms in the given field, parsed to numeric values using a custom FieldCache.Parser.

Parameters:
field - Name of field to sort by. Must not be null.
parser - Instance of a FieldCache.Parser, which must subclass one of the existing numeric parsers from FieldCache. Sort type is inferred by testing which numeric parser the parser subclasses.
Throws:
IllegalArgumentException - if the parser fails to subclass an existing numeric parser, or field is null

SortField

public SortField(String field,
                 FieldCache.Parser parser,
                 boolean reverse)
Creates a sort, possibly in reverse, by terms in the given field, parsed to numeric values using a custom FieldCache.Parser.

Parameters:
field - Name of field to sort by. Must not be null.
parser - Instance of a FieldCache.Parser, which must subclass one of the existing numeric parsers from FieldCache. Sort type is inferred by testing which numeric parser the parser subclasses.
reverse - True if natural order should be reversed.
Throws:
IllegalArgumentException - if the parser fails to subclass an existing numeric parser, or field is null

SortField

public SortField(String field,
                 Locale locale)
Creates a sort by terms in the given field sorted according to the given locale.

Parameters:
field - Name of field to sort by, cannot be null.
locale - Locale of values in the field.

SortField

public SortField(String field,
                 Locale locale,
                 boolean reverse)
Creates a sort, possibly in reverse, by terms in the given field sorted according to the given locale.

Parameters:
field - Name of field to sort by, cannot be null.
locale - Locale of values in the field.

SortField

public SortField(String field,
                 FieldComparatorSource comparator)
Creates a sort with a custom comparison function.

Parameters:
field - Name of field to sort by; cannot be null.
comparator - Returns a comparator for sorting hits.

SortField

public SortField(String field,
                 FieldComparatorSource comparator,
                 boolean reverse)
Creates a sort, possibly in reverse, with a custom comparison function.

Parameters:
field - Name of field to sort by; cannot be null.
comparator - Returns a comparator for sorting hits.
reverse - True if natural order should be reversed.
Method Detail

setMissingValue

public SortField setMissingValue(Object missingValue)
Set a default sorting value for documents which lacks one


getField

public String getField()
Returns the name of the field. Could return null if the sort is by SCORE or DOC.

Returns:
Name of field, possibly null.

getType

public int getType()
Returns the type of contents in the field.

Returns:
One of the constants SCORE, DOC, STRING, INT or FLOAT.

getLocale

public Locale getLocale()
Returns the Locale by which term values are interpreted. May return null if no Locale was specified.

Returns:
Locale, or null.

getParser

public FieldCache.Parser getParser()
Returns the instance of a FieldCache parser that fits to the given sort type. May return null if no parser was specified. Sorting is using the default parser then.

Returns:
An instance of a FieldCache parser, or null.

getReverse

public boolean getReverse()
Returns whether the sort should be reversed.

Returns:
True if natural order should be reversed.

getComparatorSource

public FieldComparatorSource getComparatorSource()
Returns the FieldComparatorSource used for custom sorting


toString

public String toString()
Overrides:
toString in class Object

equals

public boolean equals(Object o)
Returns true if o is equal to this. If a FieldComparatorSource or FieldCache.Parser was provided, it must properly implement equals (unless a singleton is always used).

Overrides:
equals in class Object

hashCode

public int hashCode()
Returns true if o is equal to this. If a FieldComparatorSource or FieldCache.Parser was provided, it must properly implement hashCode (unless a singleton is always used).

Overrides:
hashCode in class Object

getComparator

public FieldComparator<?> getComparator(int numHits,
                                        int sortPos)
                                 throws IOException
Returns the FieldComparator to use for sorting.

Parameters:
numHits - number of top hits the queue will store
sortPos - position of this SortField within Sort. The comparator is primary if sortPos==0, secondary if sortPos==1, etc. Some comparators can optimize themselves when they are the primary sort.
Returns:
FieldComparator to use when sorting
Throws:
IOException
WARNING: This API is experimental and might change in incompatible ways in the next release.