Package org.apache.lucene.search.suggest
Class SortedInputIterator
- java.lang.Object
-
- org.apache.lucene.search.suggest.SortedInputIterator
-
- All Implemented Interfaces:
InputIterator,BytesRefIterator
- Direct Known Subclasses:
WFSTCompletionLookup.WFSTInputIterator
public class SortedInputIterator extends java.lang.Object implements InputIterator
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
Fields Modifier and Type Field Description private java.util.Comparator<BytesRef>comparatorprivate java.util.Set<BytesRef>contextsprivate booleandoneprivate booleanhasContextsprivate booleanhasPayloadsprivate BytesRefpayloadprivate OfflineSorter.ByteSequencesReaderreaderprivate InputIteratorsourceprivate DirectorytempDirprivate java.lang.StringtempFileNamePrefixprivate IndexOutputtempInputprivate java.lang.StringtempSortedFileNameprivate java.util.Comparator<BytesRef>tieBreakByCostComparatorSortes by BytesRef (ascending) then cost (ascending).private longweight-
Fields inherited from interface org.apache.lucene.search.suggest.InputIterator
EMPTY
-
-
Constructor Summary
Constructors Constructor Description SortedInputIterator(Directory tempDir, java.lang.String tempFileNamePrefix, InputIterator source)Creates a new sorted wrapper, using natural order for sorting.SortedInputIterator(Directory tempDir, java.lang.String tempFileNamePrefix, InputIterator source, java.util.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 private voidclose()java.util.Set<BytesRef>contexts()A term's contexts context can be used to filter suggestions.protected longdecode(BytesRef scratch, ByteArrayDataInput tmpInput)decodes the weight at the current positionprotected java.util.Set<BytesRef>decodeContexts(BytesRef scratch, ByteArrayDataInput tmpInput)decodes the contexts at the current positionprotected BytesRefdecodePayload(BytesRef scratch, ByteArrayDataInput tmpInput)decodes the payload at the current positionprotected voidencode(OfflineSorter.ByteSequencesWriter writer, ByteArrayDataOutput output, byte[] buffer, BytesRef spare, BytesRef payload, java.util.Set<BytesRef> contexts, long weight)encodes an entry (bytes+(contexts)+(payload)+weight) to the provided writerbooleanhasContexts()Returns true if the iterator has contextsbooleanhasPayloads()Returns true if the iterator has payloadsBytesRefnext()Increments the iteration to the nextBytesRefin the iterator.BytesRefpayload()An arbitrary byte[] to record per suggestion.private OfflineSorter.ByteSequencesReadersort()longweight()A term's weight, higher numbers mean better suggestions.
-
-
-
Field Detail
-
source
private final InputIterator source
-
tempInput
private IndexOutput tempInput
-
tempSortedFileName
private java.lang.String tempSortedFileName
-
reader
private final OfflineSorter.ByteSequencesReader reader
-
comparator
private final java.util.Comparator<BytesRef> comparator
-
hasPayloads
private final boolean hasPayloads
-
hasContexts
private final boolean hasContexts
-
tempDir
private final Directory tempDir
-
tempFileNamePrefix
private final java.lang.String tempFileNamePrefix
-
done
private boolean done
-
weight
private long weight
-
payload
private BytesRef payload
-
contexts
private java.util.Set<BytesRef> contexts
-
tieBreakByCostComparator
private final java.util.Comparator<BytesRef> tieBreakByCostComparator
Sortes by BytesRef (ascending) then cost (ascending).
-
-
Constructor Detail
-
SortedInputIterator
public SortedInputIterator(Directory tempDir, java.lang.String tempFileNamePrefix, InputIterator source) throws java.io.IOException
Creates a new sorted wrapper, using natural order for sorting.- Throws:
java.io.IOException
-
SortedInputIterator
public SortedInputIterator(Directory tempDir, java.lang.String tempFileNamePrefix, InputIterator source, java.util.Comparator<BytesRef> comparator) throws java.io.IOException
Creates a new sorted wrapper, sorting by BytesRef (ascending) then cost (ascending).- Throws:
java.io.IOException
-
-
Method Detail
-
next
public BytesRef next() throws java.io.IOException
Description copied from interface:BytesRefIteratorIncrements the iteration to the nextBytesRefin the iterator. Returns the resultingBytesRefornullif 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:
nextin interfaceBytesRefIterator- Returns:
- the next
BytesRefin the iterator ornullif the end of the iterator is reached. - Throws:
java.io.IOException- If there is a low-level I/O error.
-
weight
public long weight()
Description copied from interface:InputIteratorA term's weight, higher numbers mean better suggestions.- Specified by:
weightin interfaceInputIterator
-
payload
public BytesRef payload()
Description copied from interface:InputIteratorAn arbitrary byte[] to record per suggestion. SeeLookup.LookupResult.payloadto retrieve the payload for each suggestion.- Specified by:
payloadin interfaceInputIterator
-
hasPayloads
public boolean hasPayloads()
Description copied from interface:InputIteratorReturns true if the iterator has payloads- Specified by:
hasPayloadsin interfaceInputIterator
-
contexts
public java.util.Set<BytesRef> contexts()
Description copied from interface:InputIteratorA term's contexts context can be used to filter suggestions. May return null, if suggest entries do not have any context- Specified by:
contextsin interfaceInputIterator
-
hasContexts
public boolean hasContexts()
Description copied from interface:InputIteratorReturns true if the iterator has contexts- Specified by:
hasContextsin interfaceInputIterator
-
sort
private OfflineSorter.ByteSequencesReader sort() throws java.io.IOException
- Throws:
java.io.IOException
-
close
private void close() throws java.io.IOException- Throws:
java.io.IOException
-
encode
protected void encode(OfflineSorter.ByteSequencesWriter writer, ByteArrayDataOutput output, byte[] buffer, BytesRef spare, BytesRef payload, java.util.Set<BytesRef> contexts, long weight) throws java.io.IOException
encodes an entry (bytes+(contexts)+(payload)+weight) to the provided writer- Throws:
java.io.IOException
-
decode
protected long decode(BytesRef scratch, ByteArrayDataInput tmpInput)
decodes the weight at the current position
-
decodeContexts
protected java.util.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
-
-