## org.apache.lucene.search.suggest.fst
Class FSTCompletionLookup

    java.lang.Object
      org.apache.lucene.search.suggest.Lookup
          org.apache.lucene.search.suggest.fst.FSTCompletionLookup

    public class FSTCompletionLookup

extends Lookup

An adapter from `Lookup` API to `FSTCompletion`.

This adapter differs from `FSTCompletion` in that it attempts to discretize any "weights" as passed from in `TermFreqIterator.weight()` to match the number of buckets. For the rationale for bucketing, see `FSTCompletion`.

Note:Discretization requires an additional sorting pass.

The range of weights for bucketing/ discretization is determined by sorting the input by weight and then dividing into equal ranges. Then, scores within each range are assigned to that bucket.

Note that this means that even large differences in weights may be lost during automaton construction, but the overall distinction between "classes" of weights will be preserved regardless of the distribution of weights.

For fine-grained control over which weights are assigned to which buckets, use `FSTCompletion` directly or `TSTLookup`, for example.

See Also:
  `FSTCompletion`
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
`FSTCompletionLookup()` This constructor prepares for creating a suggested FST using the `build(TermFreqIterator)` method.
`FSTCompletionLookup(FSTCompletion completion, boolean exactMatchFirst)` This constructor takes a pre-built automaton.
`FSTCompletionLookup(int buckets, boolean exactMatchFirst)` This constructor prepares for creating a suggested FST using the `build(TermFreqIterator)` method.

Method Summary
`void` `build(TermFreqIterator tfit)` Builds up a new internal `Lookup` representation based on the given `TermFreqIterator`.
`Object` `get(CharSequence key)`
`boolean` `load(InputStream input)` Discard current lookup data and load it from a previously saved copy.
`List<Lookup.LookupResult>` `lookup(CharSequence key, boolean higherWeightsFirst, 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.

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`

Constructor Detail

### FSTCompletionLookup

    public FSTCompletionLookup()

  This constructor prepares for creating a suggested FST using the `build(TermFreqIterator)` method. The number of weight discretization buckets is set to `FSTCompletion.DEFAULT_BUCKETS` and exact matches are promoted to the top of the suggestions list.

### FSTCompletionLookup

    public FSTCompletionLookup(int buckets,
                               boolean exactMatchFirst)

  This constructor prepares for creating a suggested FST using the `build(TermFreqIterator)` method.

  Parameters:
    `buckets` - The number of weight discretization buckets (see `FSTCompletion` for details).
    `exactMatchFirst` - If `true` exact matches are promoted to the top of the suggestions list. Otherwise they appear in the order of discretized weight and alphabetical within the bucket.

### FSTCompletionLookup

    public FSTCompletionLookup(FSTCompletion completion,
                               boolean exactMatchFirst)

  This constructor takes a pre-built automaton.

  Parameters:
    `completion` - An instance of `FSTCompletion`.
    `exactMatchFirst` - If `true` exact matches are promoted to the top of the suggestions list. Otherwise they appear in the order of discretized weight and alphabetical within the bucket.

Method Detail

### build

    public void build(TermFreqIterator tfit)
               throws IOException

  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`

### lookup

    public List<Lookup.LookupResult> lookup(CharSequence key,
                                            boolean higherWeightsFirst,
                                            int num)

  Description copied from class: `Lookup`
  Look up a key and return possible completion for this key.

  Specified by:
    `lookup` in class `Lookup`
  Parameters:
    `key` - lookup key. Depending on the implementation this may be a prefix, misspelling, or even infix.
    `higherWeightsFirst` - return only more popular results
    `num` - 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)

### 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 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

  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.