IndexSorter.BinarySorter (Lucene 10.5.0 core API)
Description: declaration: package: org.apache.lucene.index, interface: IndexSorter, class: BinarySorter

Package org.apache.lucene.index

# Class IndexSorter.BinarySorter

java.lang.Object
org.apache.lucene.index.IndexSorter.BinarySorter

All Implemented Interfaces:
  `IndexSorter`

Enclosing interface:
  `IndexSorter`

public static final class IndexSorter.BinarySorter extends Object implements IndexSorter
Sorts documents by the bytes of a `BinaryDocValues` instance, using the given comparator.

Unlike `IndexSorter.StringSorter` there is no global ordinal map: values are compared directly, so the merge reads each (already sorted) segment strictly sequentially via `DocIdSetIterator.nextDoc()`, which stays linear and efficient even for block-compressed formats.

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from interface org.apache.lucene.index.IndexSorter

  `IndexSorter.BinaryDocValuesProvider, IndexSorter.BinarySorter, IndexSorter.ComparableProvider, IndexSorter.ComparableValues, IndexSorter.DocComparator, IndexSorter.DoubleSorter, IndexSorter.FloatSorter, IndexSorter.IntSorter, IndexSorter.LongSorter, IndexSorter.NumericDocValuesProvider, IndexSorter.SortedDocValuesProvider, IndexSorter.StringSorter`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `BinarySorter(String providerName, boolean reverse, Comparator<BytesRef> comparator, IndexSorter.BinaryDocValuesProvider valuesProvider)`
  Creates a new BinarySorter

- ## Method Summary

  Modifier and Type
  Method
  Description
  `IndexSorter.ComparableValues`
  `getComparableValues(List<? extends LeafReader> readers)`
  Get a `IndexSorter.ComparableValues`, used for merge sorting documents across the given segments.
  `IndexSorter.DocComparator`
  `getDocComparator(LeafReader reader, int maxDoc)`
  Get a comparator that determines the sort order of docs within a single Reader.
  `String`
  `getProviderName()`
  The SPI-registered name of a `SortFieldProvider` that will deserialize the parent SortField

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

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

  ### Methods inherited from interface org.apache.lucene.index.IndexSorter

  `getComparableProviders`

- ## Constructor Details

  - ### BinarySorter

    public BinarySorter(String providerName, boolean reverse, Comparator<BytesRef> comparator, IndexSorter.BinaryDocValuesProvider valuesProvider)
    Creates a new BinarySorter

- ## Method Details

  - ### getComparableValues

    public IndexSorter.ComparableValues getComparableValues(List<? extends LeafReader> readers) throws IOException
    Description copied from interface: `IndexSorter`
    Get a `IndexSorter.ComparableValues`, used for merge sorting documents across the given segments.

    The default implementation adapts `IndexSorter.getComparableProviders(List)` and is appropriate for any sort whose value can be represented as a `long`.

    Specified by:
      `getComparableValues` in interface `IndexSorter`
    Parameters:
      `readers` - the readers to be merged
    Throws:
      `IOException`

  - ### getDocComparator

    public IndexSorter.DocComparator getDocComparator(LeafReader reader, int maxDoc) throws IOException
    Description copied from interface: `IndexSorter`
    Get a comparator that determines the sort order of docs within a single Reader.

    NB We cannot simply use the `FieldComparator` API because it requires docIDs to be sent in-order. The default implementations allocate array[maxDoc] to hold native values for comparison, but 1) they are transient (only alive while sorting this one segment) and 2) in the typical index sorting case, they are only used to sort newly flushed segments, which will be smaller than merged segments

    Specified by:
      `getDocComparator` in interface `IndexSorter`
    Parameters:
      `reader` - the Reader to sort
      `maxDoc` - the number of documents in the Reader
    Throws:
      `IOException`

  - ### getProviderName

    public String getProviderName()
    Description copied from interface: `IndexSorter`
    The SPI-registered name of a `SortFieldProvider` that will deserialize the parent SortField
    Specified by:
      `getProviderName` in interface `IndexSorter`