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

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
    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 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`