Class WFSTCompletionLookup
- java.lang.Object
-
- org.apache.lucene.search.suggest.Lookup
-
- org.apache.lucene.search.suggest.fst.WFSTCompletionLookup
-
public class WFSTCompletionLookup extends Lookup
Suggester based on a weighted FST: it first traverses the prefix, then walks the n shortest paths to retrieve top-ranked suggestions.NOTE: Although the
TermFreqIterator
API specifies floating point weights, input weights should be whole numbers. Input weights will be cast to a java integer, and any negative, infinite, or NaN values will be rejected.- See Also:
Util.shortestPaths(FST, FST.Arc, Comparator, int)
- WARNING: This API is experimental and might change in incompatible ways in the next release.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.lucene.search.suggest.Lookup
Lookup.LookupPriorityQueue, Lookup.LookupResult
-
-
Field Summary
-
Fields inherited from class org.apache.lucene.search.suggest.Lookup
CHARSEQUENCE_COMPARATOR
-
-
Constructor Summary
Constructors Constructor Description WFSTCompletionLookup()
WFSTCompletionLookup(boolean exactFirst)
Creates a new suggester.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
build(TermFreqIterator iterator)
Builds up a new internalLookup
representation based on the givenTermFreqIterator
.Object
get(CharSequence key)
Returns the weight associated with an input string, or null if it does not exist.boolean
load(InputStream input)
Discard current lookup data and load it from a previously saved copy.List<Lookup.LookupResult>
lookup(CharSequence key, boolean onlyMorePopular, int num)
Look up a key and return possible completion for this key.boolean
store(OutputStream output)
Persist the constructed lookup data to a directory.
-
-
-
Constructor Detail
-
WFSTCompletionLookup
public WFSTCompletionLookup()
-
WFSTCompletionLookup
public WFSTCompletionLookup(boolean exactFirst)
Creates a new suggester.- Parameters:
exactFirst
-true
if suggestions that match the prefix exactly should always be returned first, regardless of score. This has no performance impact, but could result in low-quality suggestions.
-
-
Method Detail
-
build
public void build(TermFreqIterator iterator) throws IOException
Description copied from class:Lookup
Builds up a new internalLookup
representation based on the givenTermFreqIterator
. The implementation might re-sort the data internally.- Specified by:
build
in classLookup
- Throws:
IOException
-
store
public boolean store(OutputStream output) throws IOException
Description copied from class:Lookup
Persist the constructed lookup data to a directory. Optional operation.- Specified by:
store
in classLookup
- Parameters:
output
-OutputStream
to write the data to.- Returns:
- true if successful, false if unsuccessful or not supported.
- Throws:
IOException
- when fatal IO error occurs.
-
load
public boolean load(InputStream input) throws IOException
Description copied from class:Lookup
Discard current lookup data and load it from a previously saved copy. Optional operation.- Specified by:
load
in classLookup
- Parameters:
input
- theInputStream
to load the lookup data.- Returns:
- true if completed successfully, false if unsuccessful or not supported.
- Throws:
IOException
- when fatal IO error occurs.
-
lookup
public List<Lookup.LookupResult> lookup(CharSequence key, boolean onlyMorePopular, int num)
Description copied from class:Lookup
Look up a key and return possible completion for this key.- Specified by:
lookup
in classLookup
- Parameters:
key
- lookup key. Depending on the implementation this may be a prefix, misspelling, or even infix.onlyMorePopular
- return only more popular resultsnum
- maximum number of results to return- Returns:
- a list of possible completions, with their relative weight (e.g. popularity)
-
get
public Object get(CharSequence key)
Returns the weight associated with an input string, or null if it does not exist.
-
-