org.apache.lucene.index

## Class SortFieldProvider

- java.lang.Object
- - org.apache.lucene.index.SortFieldProvider

All Implemented Interfaces:
  NamedSPILoader.NamedSPI

Direct Known Subclasses:
  SortedNumericSortField.Provider, SortedSetSortField.Provider, SortField.Provider

    public abstract class SortFieldProvider
    extends Object
    implements NamedSPILoader.NamedSPI

Reads/Writes a named SortField from a segment info file, used to record index sorts

### Field Summary

Fields
`protected String` `name` The name this SortFieldProvider is registered under

### Constructor Summary

Constructors
`protected` `SortFieldProvider(String name)` Creates a new SortFieldProvider.

### Method Summary

All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
`static Set<String>` `availableSortFieldProviders()` Lists all available SortFieldProviders
`static SortFieldProvider` `forName(String name)` Looks up a SortFieldProvider by name
`String` `getName()`
`abstract SortField` `readSortField(DataInput in)` Reads a SortField from serialized bytes
`static void` `reloadSortFieldProviders(ClassLoader classLoader)` Reloads the SortFieldProvider list from the given `ClassLoader`.
`static void` `write(SortField sf, DataOutput output)` Writes a SortField to a DataOutput
`abstract void` `writeSortField(SortField sf, DataOutput out)` Writes a SortField to a DataOutput This is used to record index sort information in segment headers

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

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### name

    protected final String name

The name this SortFieldProvider is registered under

### Constructor Detail

#### SortFieldProvider

    protected SortFieldProvider(String name)

Creates a new SortFieldProvider.

The provided name will be written into the index segment: in order to for the segment to be read this class should be registered with Java's SPI mechanism (registered in META-INF/ of your jar file, etc).

Parameters:
  `name` - must be all ascii alphanumeric, and less than 128 characters in length.

### Method Detail

#### forName

    public static SortFieldProvider forName(String name)

Looks up a SortFieldProvider by name

#### availableSortFieldProviders

    public static Set<String> availableSortFieldProviders()

Lists all available SortFieldProviders

#### reloadSortFieldProviders

    public static void reloadSortFieldProviders(ClassLoader classLoader)

Reloads the SortFieldProvider list from the given `ClassLoader`. Changes to the list are visible after the method ends, all iterators (`availableSortFieldProviders()` ()},...) stay consistent.

NOTE: Only new SortFieldProviders are added, existing ones are never removed or replaced.

This method is expensive and should only be called for discovery of new SortFieldProviders on the given classpath/classloader!

#### write

    public static void write(SortField sf,
                             DataOutput output)
                      throws IOException

Writes a SortField to a DataOutput

Throws:
  `IOException`

#### getName

    public String getName()

Specified by:
  `getName` in interface `NamedSPILoader.NamedSPI`

#### readSortField

    public abstract SortField readSortField(DataInput in)
                                     throws IOException

Reads a SortField from serialized bytes

Throws:
  `IOException`

#### writeSortField

    public abstract void writeSortField(SortField sf,
                                        DataOutput out)
                                 throws IOException

Writes a SortField to a DataOutput This is used to record index sort information in segment headers

Throws:
  `IOException`