Class Suggester
java.lang.Object
org.apache.lucene.analysis.hunspell.Suggester
A generator for misspelled word corrections based on Hunspell flags. The suggestions are searched
for in two main ways:
- Modification: trying to insert/remove/delete/swap parts of the word to get something
acceptable. The performance of this part depends heavily on the contents of TRY, MAP, REP,
KEY directives in the .aff file. To speed up this part, consider using
withFragmentChecker(org.apache.lucene.analysis.hunspell.FragmentChecker)
. - Enumeration: if the modification hasn't produced "good enough" suggestions, the whole
dictionary is scanned and simple affixes are added onto the entries to check if that
produces anything similar to the given misspelled word. This depends on the dictionary size
and the affix count, and it can take noticeable amount of time. To speed this up,
withSuggestibleEntryCache()
can be used.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Dictionary
private final FragmentChecker
private final boolean
private final SuggestibleEntryCache
-
Constructor Summary
ConstructorsModifierConstructorDescriptionSuggester
(Dictionary dictionary) private
Suggester
(Dictionary dictionary, SuggestibleEntryCache suggestibleCache, FragmentChecker checker, boolean proceedPastRep) -
Method Summary
Modifier and TypeMethodDescriptionprivate Runnable
checkTimeLimit
(String word, Set<Suggestion> suggestions, long timeLimitMs, Runnable checkCanceled) private Runnable
handleCustomTimeoutException
(Runnable checkCanceled, LinkedHashSet<Suggestion> suggestions) modifyChunksBetweenDashes
(String word, Hunspell speller, Runnable checkCanceled) postprocess
(Collection<Suggestion> suggestions) Returns a copy of this suggester instance that doesn't stop after encountering acceptable words after applying REP rules.suggest
(String word, LinkedHashSet<Suggestion> suggestions, Runnable checkCanceled) suggestNoTimeout
(String word, Runnable checkCanceled) Compute suggestions for the given misspelled wordsuggestWithTimeout
(String word, long timeLimitMs, Runnable checkCanceled) withFragmentChecker
(FragmentChecker checker) Returns a copy of this suggester instance withFragmentChecker
hint that can improve the performance of the "Modification" phase performance.Returns a copy of this suggester instance with better "Enumeration" phase performance (seeSuggester
documentation), but using more memory.
-
Field Details
-
dictionary
-
suggestibleCache
-
fragmentChecker
-
proceedPastRep
private final boolean proceedPastRep
-
-
Constructor Details
-
Suggester
-
Suggester
private Suggester(Dictionary dictionary, SuggestibleEntryCache suggestibleCache, FragmentChecker checker, boolean proceedPastRep)
-
-
Method Details
-
withSuggestibleEntryCache
Returns a copy of this suggester instance with better "Enumeration" phase performance (seeSuggester
documentation), but using more memory. With this option, the dictionary entries are stored as fast-to-iterate plain words instead of highly compressed prefix trees. -
withFragmentChecker
Returns a copy of this suggester instance withFragmentChecker
hint that can improve the performance of the "Modification" phase performance. -
proceedPastRep
Returns a copy of this suggester instance that doesn't stop after encountering acceptable words after applying REP rules. By default, Hunspell stops when it finds any, but this behavior may not always be desirable, e.g., if we have "REP i ea", "tims" be replaced only by "teams" and not "times", which could also be meant. -
suggestNoTimeout
Compute suggestions for the given misspelled word- Parameters:
word
- the misspelled word to calculate suggestions forcheckCanceled
- an object that's periodically called, allowing to interrupt or suggestion generation by throwing an exception
-
handleCustomTimeoutException
private Runnable handleCustomTimeoutException(Runnable checkCanceled, LinkedHashSet<Suggestion> suggestions) -
suggestWithTimeout
public List<String> suggestWithTimeout(String word, long timeLimitMs, Runnable checkCanceled) throws SuggestionTimeoutException - Parameters:
word
- the misspelled word to calculate suggestions fortimeLimitMs
- the duration limit in milliseconds after which the computation is interruped by an exceptioncheckCanceled
- an object that's periodically called, allowing to interrupt or suggestion generation by throwing an exception- Throws:
SuggestionTimeoutException
- if the computation takes too long. UseSuggestionTimeoutException.getPartialResult()
to get the suggestions computed up to that point
-
suggest
private List<String> suggest(String word, LinkedHashSet<Suggestion> suggestions, Runnable checkCanceled) throws SuggestionTimeoutException - Throws:
SuggestionTimeoutException
-
checkTimeLimit
private Runnable checkTimeLimit(String word, Set<Suggestion> suggestions, long timeLimitMs, Runnable checkCanceled) -
postprocess
-
modifyChunksBetweenDashes
-