org.apache.lucene.search

## Class SortField

- java.lang.Object
- - org.apache.lucene.search.SortField

    public class SortField
    extends Object

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`

### Nested Class Summary

Nested Classes
`static class` `SortField.Type` Specifies the type of the terms to be sorted, or special types such as CUSTOM

### Field Summary

Fields
`static SortField` `FIELD_DOC` Represents sorting by document number (index order).
`static SortField` `FIELD_SCORE` Represents sorting by document score (relevance).
`Object` `missingValue`

### Constructor Summary

Constructors
Constructor and Description
`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, SortField.Type type)` Creates a sort by terms in the given field with the type of term values explicitly given.
`SortField(String field, SortField.Type type, boolean reverse)` Creates a sort, possibly in reverse, by terms in the given field with the type of term values explicitly given.

### Method Summary

Methods
`boolean` `equals(Object o)` Returns true if `o` is equal to this.
`Comparator<BytesRef>` `getBytesComparator()`
`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.
`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.
`SortField.Type` `getType()` Returns the type of contents in the field.
`int` `hashCode()` Returns true if `o` is equal to this.
`SortField` `rewrite(IndexSearcher searcher)` Rewrites this SortField, returning a new SortField if a change is made.
`void` `setBytesComparator(Comparator<BytesRef> b)`
`SortField` `setMissingValue(Object missingValue)`
`String` `toString()`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Field Detail

#### 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).

#### missingValue

    public Object missingValue

### Constructor Detail

#### SortField

    public SortField(String field,
             SortField.Type 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,
             SortField.Type 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,
             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)

#### 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 SortField.Type getType()

Returns the type of contents in the field.

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

#### 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`

#### setBytesComparator

    public void setBytesComparator(Comparator<BytesRef> b)

#### getBytesComparator

    public Comparator<BytesRef> getBytesComparator()

#### 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.

#### rewrite

    public SortField rewrite(IndexSearcher searcher)
                      throws IOException

Rewrites this SortField, returning a new SortField if a change is made. Subclasses should override this define their rewriting behavior when this SortField is of type `SortField.Type.REWRITEABLE`

Parameters:
  `searcher` - IndexSearcher to use during rewriting
Returns:
  New rewritten SortField, or `this` if nothing has changed.
Throws:
  `IOException` - Can be thrown by the rewriting
WARNING: This API is experimental and might change in incompatible ways in the next release.