Package 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
Modifier and Type
Field
Description
`protected final String`
`name`
The name this SortFieldProvider is registered under

## Constructor Summary

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

## Method Summary

Modifier and Type
Method
Description
`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

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

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

## Field Details

### name

protected final String name
The name this SortFieldProvider is registered under

## Constructor Details

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

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