java.lang.Object
org.apache.lucene.search.suggest.SortedInputIterator
- All Implemented Interfaces:
InputIterator
,BytesRefIterator
- Direct Known Subclasses:
WFSTCompletionLookup.WFSTInputIterator
This wrapper buffers incoming elements and makes sure they are sorted based on given comparator.
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.apache.lucene.search.suggest.InputIterator
InputIterator.InputIteratorWrapper
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Comparator
<BytesRef> private boolean
private final boolean
private final boolean
private BytesRef
private final OfflineSorter.ByteSequencesReader
private final InputIterator
private final Directory
private final String
private IndexOutput
private String
private final Comparator
<BytesRef> Sortes by BytesRef (ascending) then cost (ascending).private long
Fields inherited from interface org.apache.lucene.search.suggest.InputIterator
EMPTY
-
Constructor Summary
ConstructorsConstructorDescriptionSortedInputIterator
(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 TypeMethodDescriptionprivate void
close()
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 positiondecodeContexts
(BytesRef scratch, ByteArrayDataInput tmpInput) decodes the contexts at the current positionprotected BytesRef
decodePayload
(BytesRef scratch, ByteArrayDataInput tmpInput) decodes the payload at the current positionprotected 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 writerboolean
Returns true if the iterator has contextsboolean
Returns true if the iterator has payloadsnext()
Increments the iteration to the nextBytesRef
in the iterator.payload()
An arbitrary byte[] to record per suggestion.sort()
long
weight()
A term's weight, higher numbers mean better suggestions.
-
Field Details
-
source
-
tempInput
-
tempSortedFileName
-
reader
-
comparator
-
hasPayloads
private final boolean hasPayloads -
hasContexts
private final boolean hasContexts -
tempDir
-
tempFileNamePrefix
-
done
private boolean done -
weight
private long weight -
payload
-
contexts
-
tieBreakByCostComparator
Sortes by BytesRef (ascending) then cost (ascending).
-
-
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
Description copied from interface:BytesRefIterator
Increments the iteration to the nextBytesRef
in the iterator. Returns the resultingBytesRef
ornull
if the end of the iterator is reached. The returned BytesRef may be re-used across calls to next. After this method returns null, do not call it again: the results are undefined.- Specified by:
next
in interfaceBytesRefIterator
- Returns:
- the next
BytesRef
in the iterator ornull
if the end of the iterator is reached. - Throws:
IOException
- If there is a low-level I/O error.
-
weight
public long weight()Description copied from interface:InputIterator
A term's weight, higher numbers mean better suggestions.- Specified by:
weight
in interfaceInputIterator
-
payload
Description copied from interface:InputIterator
An arbitrary byte[] to record per suggestion. SeeLookup.LookupResult.payload
to retrieve the payload for each suggestion.- Specified by:
payload
in interfaceInputIterator
-
hasPayloads
public boolean hasPayloads()Description copied from interface:InputIterator
Returns true if the iterator has payloads- Specified by:
hasPayloads
in interfaceInputIterator
-
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 interfaceInputIterator
-
hasContexts
public boolean hasContexts()Description copied from interface:InputIterator
Returns true if the iterator has contexts- Specified by:
hasContexts
in interfaceInputIterator
-
sort
- Throws:
IOException
-
close
- Throws:
IOException
-
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
decodes the weight at the current position -
decodeContexts
decodes the contexts at the current position -
decodePayload
decodes the payload at the current position
-