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 and 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
`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