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

    All Methods Instance Methods Concrete Methods
    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 Detail

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

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