Package org.apache.lucene.search.suggest

# Class SortedInputIterator

java.lang.Object
org.apache.lucene.search.suggest.SortedInputIterator

All Implemented Interfaces:
  `InputIterator`, `BytesRefIterator`

public class SortedInputIterator extends Object implements InputIterator
This wrapper buffers incoming elements and makes sure they are sorted based on given comparator.

WARNING: This API is experimental and might change in incompatible ways in the next release.

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from interface org.apache.lucene.search.suggest.InputIterator

  `InputIterator.InputIteratorWrapper`

- ## Field Summary

  ### Fields inherited from interface org.apache.lucene.search.suggest.InputIterator

  `EMPTY`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SortedInputIterator(Directory tempDir, String tempFileNamePrefix, InputIterator source)`
  Creates a new sorted wrapper, using natural order for sorting.
  `SortedInputIterator(Directory tempDir, String tempFileNamePrefix, InputIterator source, Comparator<BytesRef> comparator)`
  Creates a new sorted wrapper, sorting by BytesRef (ascending) then cost (ascending).

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Set<BytesRef>`
  `contexts()`
  A term's contexts context can be used to filter suggestions.
  `protected long`
  `decode(BytesRef scratch, ByteArrayDataInput tmpInput)`
  decodes the weight at the current position
  `protected Set<BytesRef>`
  `decodeContexts(BytesRef scratch, ByteArrayDataInput tmpInput)`
  decodes the contexts at the current position
  `protected BytesRef`
  `decodePayload(BytesRef scratch, ByteArrayDataInput tmpInput)`
  decodes the payload at the current position
  `protected void`
  `encode(OfflineSorter.ByteSequencesWriter writer, ByteArrayDataOutput output, byte[] buffer, BytesRef spare, BytesRef payload, Set<BytesRef> contexts, long weight)`
  encodes an entry (bytes+(contexts)+(payload)+weight) to the provided writer
  `boolean`
  `hasContexts()`
  Returns true if the iterator has contexts
  `boolean`
  `hasPayloads()`
  Returns true if the iterator has payloads
  `BytesRef`
  `next()`
  `BytesRef`
  `payload()`
  An arbitrary byte[] to record per suggestion.
  `long`
  `weight()`
  A term's weight, higher numbers mean better suggestions.

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

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

- ## Constructor Details

  - ### SortedInputIterator

    public SortedInputIterator(Directory tempDir, String tempFileNamePrefix, InputIterator source) throws IOException
    Creates a new sorted wrapper, using natural order for sorting.
    Throws:
      `IOException`

  - ### SortedInputIterator

    public SortedInputIterator(Directory tempDir, String tempFileNamePrefix, InputIterator source, Comparator<BytesRef> comparator) throws IOException
    Creates a new sorted wrapper, sorting by BytesRef (ascending) then cost (ascending).
    Throws:
      `IOException`

- ## Method Details

  - ### next

    public BytesRef next() throws IOException
    Specified by:
      `next` in interface `BytesRefIterator`
    Throws:
      `IOException`

  - ### weight

    public long weight()
    Description copied from interface: `InputIterator`
    A term's weight, higher numbers mean better suggestions.
    Specified by:
      `weight` in interface `InputIterator`

  - ### payload

    public BytesRef payload()
    Description copied from interface: `InputIterator`
    An arbitrary byte[] to record per suggestion. See `Lookup.LookupResult.payload` to retrieve the payload for each suggestion.
    Specified by:
      `payload` in interface `InputIterator`

  - ### hasPayloads

    public boolean hasPayloads()
    Description copied from interface: `InputIterator`
    Returns true if the iterator has payloads
    Specified by:
      `hasPayloads` in interface `InputIterator`

  - ### contexts

    public Set<BytesRef> contexts()
    Description copied from interface: `InputIterator`
    A term's contexts context can be used to filter suggestions. May return null, if suggest entries do not have any context
    Specified by:
      `contexts` in interface `InputIterator`

  - ### hasContexts

    public boolean hasContexts()
    Description copied from interface: `InputIterator`
    Returns true if the iterator has contexts
    Specified by:
      `hasContexts` in interface `InputIterator`

  - ### encode

    protected void encode(OfflineSorter.ByteSequencesWriter writer, ByteArrayDataOutput output, byte[] buffer, BytesRef spare, BytesRef payload, Set<BytesRef> contexts, long weight) throws IOException
    encodes an entry (bytes+(contexts)+(payload)+weight) to the provided writer
    Throws:
      `IOException`

  - ### decode

    protected long decode(BytesRef scratch, ByteArrayDataInput tmpInput)
    decodes the weight at the current position

  - ### decodeContexts

    protected Set<BytesRef> decodeContexts(BytesRef scratch, ByteArrayDataInput tmpInput)
    decodes the contexts at the current position

  - ### decodePayload

    protected BytesRef decodePayload(BytesRef scratch, ByteArrayDataInput tmpInput)
    decodes the payload at the current position