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 and Description
`Hunspell(Dictionary dictionary)`
`Hunspell(Dictionary dictionary, TimeoutPolicy policy, Runnable checkCanceled)`

### Method Summary

All Methods Instance Methods Concrete Methods
`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