org.apache.lucene.search.suggest

## Class Lookup

- java.lang.Object
- - org.apache.lucene.search.suggest.Lookup

All Implemented Interfaces:
  Accountable

Direct Known Subclasses:
  AnalyzingInfixSuggester, AnalyzingSuggester, FreeTextSuggester, FSTCompletionLookup, JaspellLookup, TSTLookup, WFSTCompletionLookup

    public abstract class Lookup
    extends Object
    implements Accountable

Simple Lookup interface for `CharSequence` suggestions.

WARNING: This API is experimental and might change in incompatible ways in the next release.

### Nested Class Summary

Nested Classes
`static class` `Lookup.LookupPriorityQueue` A `PriorityQueue` collecting a fixed size of high priority `Lookup.LookupResult`
`static class` `Lookup.LookupResult` Result of a lookup.

### Field Summary

Fields
`static Comparator<CharSequence>` `CHARSEQUENCE_COMPARATOR` A simple char-by-char comparator for `CharSequence`

### Constructor Summary

Constructors
Constructor and Description
`Lookup()` Sole constructor.

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`void` `build(Dictionary dict)` Build lookup from a dictionary.
`abstract void` `build(InputIterator inputIterator)` Builds up a new internal `Lookup` representation based on the given `InputIterator`.
`abstract long` `getCount()` Get the number of entries the lookup was built with
`abstract boolean` `load(DataInput input)` Discard current lookup data and load it from a previously saved copy.
`boolean` `load(InputStream input)` Calls `load(DataInput)` after converting `InputStream` to `DataInput`
`List<Lookup.LookupResult>` `lookup(CharSequence key, boolean onlyMorePopular, int num)` Look up a key and return possible completion for this key.
`List<Lookup.LookupResult>` `lookup(CharSequence key, BooleanQuery contextFilerQuery, int num, boolean allTermsRequired, boolean doHighlight)` Look up a key and return possible completion for this key.
`abstract List<Lookup.LookupResult>` `lookup(CharSequence key, Set<BytesRef> contexts, boolean onlyMorePopular, int num)` Look up a key and return possible completion for this key.
`abstract boolean` `store(DataOutput output)` Persist the constructed lookup data to a directory.
`boolean` `store(OutputStream output)` Calls `store(DataOutput)` after converting `OutputStream` to `DataOutput`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.apache.lucene.util.Accountable

`getChildResources, ramBytesUsed`

### Field Detail

#### CHARSEQUENCE_COMPARATOR

    public static final Comparator<CharSequence> CHARSEQUENCE_COMPARATOR

A simple char-by-char comparator for `CharSequence`

### Constructor Detail

#### Lookup

    public Lookup()

Sole constructor. (For invocation by subclass constructors, typically implicit.)

### Method Detail

#### build

    public void build(Dictionary dict)
               throws IOException

Build lookup from a dictionary. Some implementations may require sorted or unsorted keys from the dictionary's iterator - use `SortedInputIterator` or `UnsortedInputIterator` in such case.

Throws:
  `IOException`

#### load

    public boolean load(InputStream input)
                 throws IOException

Calls `load(DataInput)` after converting `InputStream` to `DataInput`

Throws:
  `IOException`

#### store

    public boolean store(OutputStream output)
                  throws IOException

Calls `store(DataOutput)` after converting `OutputStream` to `DataOutput`

Throws:
  `IOException`

#### getCount

    public abstract long getCount()
                           throws IOException

Get the number of entries the lookup was built with

Returns:
  total number of suggester entries
Throws:
  `IOException`

#### build

    public abstract void build(InputIterator inputIterator)
                        throws IOException

Builds up a new internal `Lookup` representation based on the given `InputIterator`. The implementation might re-sort the data internally.

Throws:
  `IOException`

#### lookup

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

Look up a key and return possible completion for this key.

Parameters:
  `key` - lookup key. Depending on the implementation this may be a prefix, misspelling, or even infix.
  `onlyMorePopular` - 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)
Throws:
  `IOException`

#### lookup

    public abstract List<Lookup.LookupResult> lookup(CharSequence key,
                                                     Set<BytesRef> contexts,
                                                     boolean onlyMorePopular,
                                                     int num)
                                              throws IOException

Look up a key and return possible completion for this key.

Parameters:
  `key` - lookup key. Depending on the implementation this may be a prefix, misspelling, or even infix.
  `contexts` - contexts to filter the lookup by, or null if all contexts are allowed; if the suggestion contains any of the contexts, it's a match
  `onlyMorePopular` - 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)
Throws:
  `IOException`

#### lookup

    public List<Lookup.LookupResult> lookup(CharSequence key,
                                            BooleanQuery contextFilerQuery,
                                            int num,
                                            boolean allTermsRequired,
                                            boolean doHighlight)
                                     throws IOException

Look up a key and return possible completion for this key. This needs to be overridden by all implementing classes as the default implementation just returns null

Parameters:
  `key` - the lookup key
  `contextFilerQuery` - A query for further filtering the result of the key lookup
  `num` - maximum number of results to return
  `allTermsRequired` - true is all terms are required
  `doHighlight` - set to true if key should be highlighted
Returns:
  a list of suggestions/completions. The default implementation returns null, meaning each @Lookup implementation should override this and provide their own implementation
Throws:
  `IOException` - when IO exception occurs

#### store

    public abstract boolean store(DataOutput output)
                           throws IOException

Persist the constructed lookup data to a directory. Optional operation.

Parameters:
  `output` - `DataOutput` to write the data to.
Returns:
  true if successful, false if unsuccessful or not supported.
Throws:
  `IOException` - when fatal IO error occurs.

#### load

    public abstract boolean load(DataInput input)
                          throws IOException

Discard current lookup data and load it from a previously saved copy. Optional operation.

Parameters:
  `input` - the `DataInput` to load the lookup data.
Returns:
  true if completed successfully, false if unsuccessful or not supported.
Throws:
  `IOException` - when fatal IO error occurs.