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)
-
-
-
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 timecheckCanceled
- 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 originalhunspell -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 andTimeoutPolicy.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 fortimeLimitMs
- the duration limit in milliseconds, after which the associatedTimeoutPolicy
's effects (exception or partial result) may kick in- Throws:
SuggestionTimeoutException
- if the computation takes too long andTimeoutPolicy.THROW_EXCEPTION
was specified in the constructor
-
-