Package org.apache.lucene.search.spell

# Class WordBreakSpellChecker

java.lang.Object
org.apache.lucene.search.spell.WordBreakSpellChecker

public class WordBreakSpellChecker extends Object
A spell checker whose sole function is to offer suggestions by combining multiple terms into one word and/or breaking terms into multiple words.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static enum`
  `WordBreakSpellChecker.BreakSuggestionSortMethod`
  Determines the order to list word break suggestions

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final Term`
  `SEPARATOR_TERM`
  Term that can be used to prohibit adjacent terms from being combined

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `WordBreakSpellChecker()`
  Creates a new spellchecker with default configuration values

- ## Method Summary

  Modifier and Type
  Method
  Description
  `int`
  `getMaxChanges()`
  Returns the maximum number of changes to perform on the input
  `int`
  `getMaxCombineWordLength()`
  Returns the maximum length of a combined suggestion
  `int`
  `getMaxEvaluations()`
  Returns the maximum number of word combinations to evaluate.
  `int`
  `getMinBreakWordLength()`
  Returns the minimum size of a broken word
  `int`
  `getMinSuggestionFrequency()`
  Returns the minimum frequency a term must have to be part of a suggestion.
  `void`
  `setMaxChanges(int maxChanges)`
  The maximum numbers of changes (word breaks or combinations) to make on the original term(s).
  `void`
  `setMaxCombineWordLength(int maxCombineWordLength)`
  The maximum length of a suggestion made by combining 1 or more original terms.
  `void`
  `setMaxEvaluations(int maxEvaluations)`
  The maximum number of word combinations to evaluate.
  `void`
  `setMinBreakWordLength(int minBreakWordLength)`
  The minimum length to break words down to.
  `void`
  `setMinSuggestionFrequency(int minSuggestionFrequency)`
  The minimum frequency a term must have to be included as part of a suggestion.
  `SuggestWord[][]`
  `suggestWordBreaks(Term term, int maxSuggestions, IndexReader ir, SuggestMode suggestMode, WordBreakSpellChecker.BreakSuggestionSortMethod sortMethod)`
  Generate suggestions by breaking the passed-in term into multiple words.
  `CombineSuggestion[]`
  `suggestWordCombinations(Term[] terms, int maxSuggestions, IndexReader ir, SuggestMode suggestMode)`
  Generate suggestions by combining one or more of the passed-in terms into single words.

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

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

- ## Field Details

  - ### SEPARATOR_TERM

    public static final Term SEPARATOR_TERM
    Term that can be used to prohibit adjacent terms from being combined

- ## Constructor Details

  - ### WordBreakSpellChecker

    public WordBreakSpellChecker()
    Creates a new spellchecker with default configuration values
    See Also:
      - `setMaxChanges(int)`
      - `setMaxCombineWordLength(int)`
      - `setMaxEvaluations(int)`
      - `setMinBreakWordLength(int)`
      - `setMinSuggestionFrequency(int)`

- ## Method Details

  - ### suggestWordBreaks

    public SuggestWord[][] suggestWordBreaks(Term term, int maxSuggestions, IndexReader ir, SuggestMode suggestMode, WordBreakSpellChecker.BreakSuggestionSortMethod sortMethod) throws IOException
    Generate suggestions by breaking the passed-in term into multiple words. The scores returned are equal to the number of word breaks needed so a lower score is generally preferred over a higher score.
    Parameters:
      `suggestMode` - - default = `SuggestMode.SUGGEST_WHEN_NOT_IN_INDEX`
      `sortMethod` - - default = `WordBreakSpellChecker.BreakSuggestionSortMethod.NUM_CHANGES_THEN_MAX_FREQUENCY`
    Returns:
      one or more arrays of words formed by breaking up the original term
    Throws:
      `IOException` - If there is a low-level I/O error.

  - ### suggestWordCombinations

    public CombineSuggestion[] suggestWordCombinations(Term[] terms, int maxSuggestions, IndexReader ir, SuggestMode suggestMode) throws IOException
    Generate suggestions by combining one or more of the passed-in terms into single words. The returned `CombineSuggestion` contains both a `SuggestWord` and also an array detailing which passed-in terms were involved in creating this combination. The scores returned are equal to the number of word combinations needed, also one less than the length of the array `CombineSuggestion.originalTermIndexes()`. Generally, a suggestion with a lower score is preferred over a higher score.

    To prevent two adjacent terms from being combined (for instance, if one is mandatory and the other is prohibited), separate the two terms with `SEPARATOR_TERM`

    When suggestMode equals `SuggestMode.SUGGEST_WHEN_NOT_IN_INDEX`, each suggestion will include at least one term not in the index.

    When suggestMode equals `SuggestMode.SUGGEST_MORE_POPULAR`, each suggestion will have the same, or better frequency than the most-popular included term.

    Returns:
      an array of words generated by combining original terms
    Throws:
      `IOException` - If there is a low-level I/O error.

  - ### getMinSuggestionFrequency

    public int getMinSuggestionFrequency()
    Returns the minimum frequency a term must have to be part of a suggestion.
    See Also:
      - `setMinSuggestionFrequency(int)`

  - ### getMaxCombineWordLength

    public int getMaxCombineWordLength()
    Returns the maximum length of a combined suggestion
    See Also:
      - `setMaxCombineWordLength(int)`

  - ### getMinBreakWordLength

    public int getMinBreakWordLength()
    Returns the minimum size of a broken word
    See Also:
      - `setMinBreakWordLength(int)`

  - ### getMaxChanges

    public int getMaxChanges()
    Returns the maximum number of changes to perform on the input
    See Also:
      - `setMaxChanges(int)`

  - ### getMaxEvaluations

    public int getMaxEvaluations()
    Returns the maximum number of word combinations to evaluate.
    See Also:
      - `setMaxEvaluations(int)`

  - ### setMinSuggestionFrequency

    public void setMinSuggestionFrequency(int minSuggestionFrequency)
    The minimum frequency a term must have to be included as part of a suggestion. Default=1 Not applicable when used with `SuggestMode.SUGGEST_MORE_POPULAR`
    See Also:
      - `getMinSuggestionFrequency()`

  - ### setMaxCombineWordLength

    public void setMaxCombineWordLength(int maxCombineWordLength)
    The maximum length of a suggestion made by combining 1 or more original terms. Default=20
    See Also:
      - `getMaxCombineWordLength()`

  - ### setMinBreakWordLength

    public void setMinBreakWordLength(int minBreakWordLength)
    The minimum length to break words down to. Default=1
    See Also:
      - `getMinBreakWordLength()`

  - ### setMaxChanges

    public void setMaxChanges(int maxChanges)
    The maximum numbers of changes (word breaks or combinations) to make on the original term(s). Default=1
    See Also:
      - `getMaxChanges()`

  - ### setMaxEvaluations

    public void setMaxEvaluations(int maxEvaluations)
    The maximum number of word combinations to evaluate. Default=1000. A higher value might improve result quality. A lower value might improve performance.
    See Also:
      - `getMaxEvaluations()`