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.