Package org.apache.lucene.analysis.hunspell

## Class Hunspell

- java.lang.Object
- - org.apache.lucene.analysis.hunspell.Hunspell

-     public class Hunspell
      extends Object

  A spell checker based on Hunspell dictionaries. This class can be used in place of native Hunspell for many languages for spell-checking and suggesting purposes. Note that not all languages are supported yet. For example:
  - Hungarian (as it doesn't only rely on dictionaries, but has some logic directly in the source code
  - Languages with Unicode characters outside of the Basic Multilingual Plane
  - PHONE affix file option for suggestions

  The objects of this class are thread-safe.

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `Hunspell​(Dictionary dictionary)` |
    `Hunspell​(Dictionary dictionary, TimeoutPolicy policy, Runnable checkCanceled)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `List<AffixedWord>` | `analyzeSimpleWord​(String word)` |
    `EntrySuggestion` | `compress​(List<String> words)` | Given a list of words, try to produce a smaller set of dictionary entries (with some flags) that would generate these words.
    `List<AffixedWord>` | `getAllWordForms​(String root)` | Generate all word forms for all dictionary entries with the given root word.
    `List<String>` | `getRoots​(String word)` | Find all roots that could result in the given word after case conversion and adding affixes.
    `boolean` | `spell​(String word)` |
    `List<String>` | `suggest​(String word)` |
    `List<String>` | `suggest​(String word, long timeLimitMs)` |

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

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

- - ### Constructor Detail

    - #### Hunspell

          public Hunspell​(Dictionary dictionary)

    - #### Hunspell

          public Hunspell​(Dictionary dictionary,
                          TimeoutPolicy policy,
                          Runnable checkCanceled)

      Parameters:
        `policy` - a strategy determining what to do when API calls take too much time
        `checkCanceled` - an object that's periodically called, allowing to interrupt spell-checking or suggestion generation by throwing an exception

  - ### Method Detail

    - #### spell

          public boolean spell​(String word)

      Returns:
        whether the given word's spelling is considered correct according to Hunspell rules

    - #### getRoots

          public List<String> getRoots​(String word)

      Find all roots that could result in the given word after case conversion and adding affixes. This corresponds to the original `hunspell -s` (stemming) functionality.

      Some affix rules are relaxed in this stemming process: e.g. explicitly forbidden words are still returned. Some of the returned roots may be synthetic and not directly occur in the *.dic file (but differ from some existing entries in case). No roots are returned for compound words.

      The returned roots may be used to retrieve morphological data via `Dictionary.lookupEntries(java.lang.String)`.

    - #### analyzeSimpleWord

          public List<AffixedWord> analyzeSimpleWord​(String word)

      Returns:
        all possible analyses of the given word with stems, prefixes, suffixed and morphological data. Note that the order of the returned objects might not correspond to the *.dic file order!

    - #### getAllWordForms

          public List<AffixedWord> getAllWordForms​(String root)

      Generate all word forms for all dictionary entries with the given root word. The result order is stable but not specified. This is equivalent to "unmunch" from the "hunspell-tools" package.
      See Also:
        `for finer-grained APIs`

    - #### compress

          public EntrySuggestion compress​(List<String> words)

      Given a list of words, try to produce a smaller set of dictionary entries (with some flags) that would generate these words. This is equivalent to "munch" from the "hunspell-tools" package.
      See Also:
        `for more details and control`

    - #### suggest

          public List<String> suggest​(String word)
                               throws SuggestionTimeoutException

      Returns:
        suggestions for the given misspelled word
      Throws:
        `SuggestionTimeoutException` - if the computation takes too long and `TimeoutPolicy.THROW_EXCEPTION` was specified in the constructor
      See Also:
        `for finer-grained APIs and performance optimizations`

    - #### suggest

          public List<String> suggest​(String word,
                                      long timeLimitMs)
                               throws SuggestionTimeoutException

      Parameters:
        `word` - the misspelled word to calculate suggestions for
        `timeLimitMs` - the duration limit in milliseconds, after which the associated `TimeoutPolicy`'s effects (exception or partial result) may kick in
      Throws:
        `SuggestionTimeoutException` - if the computation takes too long and `TimeoutPolicy.THROW_EXCEPTION` was specified in the constructor
      See Also:
        `for finer-grained APIs and performance optimizations`