Package org.apache.lucene.search.suggest.fst

# Class ExternalRefSorter

java.lang.Object
org.apache.lucene.search.suggest.fst.ExternalRefSorter

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`, `BytesRefSorter`

public class ExternalRefSorter extends Object implements BytesRefSorter, Closeable
An implementation of a `BytesRefSorter` that allows appending `BytesRef`s to an `OfflineSorter` and returns a `Closeable` `ExternalRefSorter.ByteSequenceIterator` that iterates over sequences stored on disk.

WARNING: This API is experimental and might change in incompatible ways in the next release.
NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static class`
  `ExternalRefSorter.ByteSequenceIterator`
  Iterates over `BytesRef`s in a file, closes the reader when the iterator is exhausted.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ExternalRefSorter(OfflineSorter sorter)`
  Will buffer all sequences to a temporary file and then sort (all on-disk).

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `add(BytesRef utf8)`
  Adds a single suggestion entry (possibly compound with its bucket).
  `void`
  `close()`
  Close the writer and remove any temporary files.
  `Comparator<BytesRef>`
  `getComparator()`
  Comparator used to determine the sort order of entries.
  `ExternalRefSorter.ByteSequenceIterator`
  `iterator()`
  Sorts the entries added in `BytesRefSorter.add(BytesRef)` and returns an iterator over all sorted entries.

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

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

- ## Constructor Details

  - ### ExternalRefSorter

    public ExternalRefSorter(OfflineSorter sorter) throws IOException
    Will buffer all sequences to a temporary file and then sort (all on-disk).
    Throws:
      `IOException`

- ## Method Details

  - ### add

    public void add(BytesRef utf8) throws IOException
    Description copied from interface: `BytesRefSorter`
    Adds a single suggestion entry (possibly compound with its bucket).
    Specified by:
      `add` in interface `BytesRefSorter`
    Throws:
      `IOException` - If an I/O exception occurs.

  - ### iterator

    public ExternalRefSorter.ByteSequenceIterator iterator() throws IOException
    Description copied from interface: `BytesRefSorter`
    Sorts the entries added in `BytesRefSorter.add(BytesRef)` and returns an iterator over all sorted entries.
    Specified by:
      `iterator` in interface `BytesRefSorter`
    Returns:
      Returns a `ExternalRefSorter.ByteSequenceIterator` that implements `BytesRefIterator` but is also `Closeable`, ensuring any temporary resources are cleaned up if the iterator is either exhausted or closed.
    Throws:
      `IOException` - If an I/O exception occurs.

  - ### close

    public void close() throws IOException
    Close the writer and remove any temporary files.
    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `Closeable`
    Throws:
      `IOException`

  - ### getComparator

    public Comparator<BytesRef> getComparator()
    Description copied from interface: `BytesRefSorter`
    Comparator used to determine the sort order of entries.
    Specified by:
      `getComparator` in interface `BytesRefSorter`
    Returns:
      Return the `Comparator` of the `OfflineSorter` used to sort byte sequences.