org.apache.lucene.search.suggest.fst
Class FSTLookup

java.lang.Object
  extended by org.apache.lucene.search.suggest.Lookup
      extended by org.apache.lucene.search.suggest.fst.FSTLookup

Deprecated. Use FSTCompletionLookup instead.

@Deprecated
public class FSTLookup
extends Lookup

Finite state automata based implementation of Lookup query suggestion/ autocomplete interface.

Implementation details

The construction step in build(TermFreqIterator) works as follows:

At runtime, in lookup(CharSequence, boolean, int), the automaton is utilized as follows:

Runtime behavior and performance characteristic

The algorithm described above is optimized for finding suggestions to short prefixes in a top-weights-first order. This is probably the most common use case: it allows presenting suggestions early and sorts them by the global frequency (and then alphabetically).

If there is an exact match in the automaton, it is returned first on the results list (even with by-weight sorting).

Note that the maximum lookup time for any prefix is the time of descending to the subtree, plus traversal of the subtree up to the number of requested suggestions (because they are already presorted by weight on the root level and alphabetically at any node level).

To order alphabetically only (no ordering by priorities), use identical term weights for all terms. Alphabetical suggestions are returned even if non-constant weights are used, but the algorithm for doing this is suboptimal.

"alphabetically" in any of the documentation above indicates utf16 codepoint order, nothing else.


Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.lucene.search.suggest.Lookup
Lookup.LookupPriorityQueue, Lookup.LookupResult
 
Field Summary
static String FILENAME
          Deprecated. Serialized automaton file name (storage).
 
Fields inherited from class org.apache.lucene.search.suggest.Lookup
CHARSEQUENCE_COMPARATOR
 
Constructor Summary
FSTLookup()
          Deprecated.  
FSTLookup(int buckets, boolean exactMatchFirst)
          Deprecated.  
 
Method Summary
 void build(TermFreqIterator tfit)
          Deprecated. Builds up a new internal Lookup representation based on the given TermFreqIterator.
 Float get(CharSequence key)
          Deprecated. Get the (approximated) weight of a single key (if there is a perfect match for it in the automaton).
 boolean load(InputStream input)
          Deprecated. Discard current lookup data and load it from a previously saved copy.
 List<Lookup.LookupResult> lookup(CharSequence key, boolean onlyMorePopular, int num)
          Deprecated. Lookup autocomplete suggestions to key.
 boolean store(OutputStream output)
          Deprecated. Persist the constructed lookup data to a directory.
 
Methods inherited from class org.apache.lucene.search.suggest.Lookup
build
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

FILENAME

public static final String FILENAME
Deprecated. 
Serialized automaton file name (storage).

See Also:
Constant Field Values
Constructor Detail

FSTLookup

public FSTLookup()
Deprecated. 

FSTLookup

public FSTLookup(int buckets,
                 boolean exactMatchFirst)
Deprecated. 
Method Detail

build

public void build(TermFreqIterator tfit)
           throws IOException
Deprecated. 
Description copied from class: Lookup
Builds up a new internal Lookup representation based on the given TermFreqIterator. The implementation might re-sort the data internally.

Specified by:
build in class Lookup
Throws:
IOException

get

public Float get(CharSequence key)
Deprecated. 
Get the (approximated) weight of a single key (if there is a perfect match for it in the automaton).

Returns:
Returns the approximated weight of the input key or null if not found.

lookup

public List<Lookup.LookupResult> lookup(CharSequence key,
                                        boolean onlyMorePopular,
                                        int num)
Deprecated. 
Lookup autocomplete suggestions to key.

Specified by:
lookup in class Lookup
Parameters:
key - The prefix to which suggestions should be sought.
onlyMorePopular - Return most popular suggestions first. This is the default behavior for this implementation. Setting it to false has no effect (use constant term weights to sort alphabetically only).
num - At most this number of suggestions will be returned.
Returns:
Returns the suggestions, sorted by their approximated weight first (decreasing) and then alphabetically (utf16 codepoint order).

store

public boolean store(OutputStream output)
              throws IOException
Deprecated. 
Description copied from class: Lookup
Persist the constructed lookup data to a directory. Optional operation.

Specified by:
store in class Lookup
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
Deprecated. 
Description copied from class: Lookup
Discard current lookup data and load it from a previously saved copy. Optional operation.

Specified by:
load in class Lookup
Parameters:
input - the InputStream to load the lookup data.
Returns:
true if completed successfully, false if unsuccessful or not supported.
Throws:
IOException - when fatal IO error occurs.