Package 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`, `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
    Modifier and Type | Class | Description
    --- | --- | ---
    `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
    Modifier and Type | Field | Description
    --- | --- | ---
    `static Comparator<CharSequence>` | `CHARSEQUENCE_COMPARATOR` | A simple char-by-char comparator for `CharSequence`

    - ### Fields inherited from interface org.apache.lucene.util.Accountable

      `NULL_ACCOUNTABLE`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `Lookup()` | Sole constructor.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `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
    `boolean` | `load​(InputStream input)` | Calls `load(DataInput)` after converting `InputStream` to `DataInput`
    `abstract boolean` | `load​(DataInput 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.
    `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.
    `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.
    `boolean` | `store​(OutputStream output)` | Calls `store(DataOutput)` after converting `OutputStream` to `DataOutput`
    `abstract boolean` | `store​(DataOutput output)` | Persist the constructed lookup data to a directory.

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