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<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)`.

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

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