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`