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