org.apache.lucene.search.spell

## Class SpellChecker

- java.lang.Object
- - org.apache.lucene.search.spell.SpellChecker

-     public class SpellChecker
      extends java.lang.Object

  Spell Checker class (Main class)
  (initially inspired by the David Spencer code).

  Example Usage:

        SpellChecker spellchecker = new SpellChecker(spellIndexDirectory);
        // To index a field of a user index:
        spellchecker.indexDictionary(new LuceneDictionary(my_lucene_reader, a_field));
        // To index a file containing words:
        spellchecker.indexDictionary(new PlainTextDictionary(new File("myfile.txt")));
        String[] suggestions = spellchecker.suggestSimilar("misspelt", 5);

  Version:
    1.0

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `F_WORD` Field name for each word in the ngram index.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SpellChecker(org.apache.lucene.store.Directory spellIndex)` Use the given directory as a spell checker index with a `LevensteinDistance` as the default `StringDistance`.
    `SpellChecker(org.apache.lucene.store.Directory spellIndex, StringDistance sd)` Use the given directory as a spell checker index.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `clearIndex()` Removes all terms from the spell check index.
    `void` | `close()` Close the IndexSearcher used by this SpellChecker
    `boolean` | `exist(java.lang.String word)` Check whether the word exists in the index.
    `StringDistance` | `getStringDistance()` Returns the `StringDistance` instance used by this `SpellChecker` instance.
    `void` | `indexDictionary(Dictionary dict)` Indexes the data from the given `Dictionary`.
    `void` | `indexDictionary(Dictionary dict, int mergeFactor, int ramMB)` Indexes the data from the given `Dictionary`.
    `void` | `setAccuracy(float minScore)` Sets the accuracy 0 < minScore < 1; default 0.5
    `void` | `setSpellIndex(org.apache.lucene.store.Directory spellIndexDir)` Use a different index as the spell checker index or re-open the existing index if `spellIndex` is the same value as given in the constructor.
    `void` | `setStringDistance(StringDistance sd)` Sets the `StringDistance` implementation for this `SpellChecker` instance.
    `java.lang.String[]` | `suggestSimilar(java.lang.String word, int numSug)` Suggest similar words.
    `java.lang.String[]` | `suggestSimilar(java.lang.String word, int numSug, org.apache.lucene.index.IndexReader ir, java.lang.String field, boolean morePopular)` Suggest similar words (optionally restricted to a field of an index).

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

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

- - ### Field Detail

    - #### F_WORD

          public static final java.lang.String F_WORD

      Field name for each word in the ngram index.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### SpellChecker

          public SpellChecker(org.apache.lucene.store.Directory spellIndex,
                              StringDistance sd)
                       throws java.io.IOException

      Use the given directory as a spell checker index. The directory is created if it doesn't exist yet.
      Parameters:
        `spellIndex` - the spell index directory
        `sd` - the `StringDistance` measurement to use
      Throws:
        `java.io.IOException` - if Spellchecker can not open the directory

    - #### SpellChecker

          public SpellChecker(org.apache.lucene.store.Directory spellIndex)
                       throws java.io.IOException

      Use the given directory as a spell checker index with a `LevensteinDistance` as the default `StringDistance`. The directory is created if it doesn't exist yet.
      Parameters:
        `spellIndex` - the spell index directory
      Throws:
        `java.io.IOException` - if spellchecker can not open the directory

  - ### Method Detail

    - #### setSpellIndex

          public void setSpellIndex(org.apache.lucene.store.Directory spellIndexDir)
                             throws java.io.IOException

      Use a different index as the spell checker index or re-open the existing index if `spellIndex` is the same value as given in the constructor.
      Parameters:
        `spellIndexDir` - the spell directory to use
      Throws:
        `org.apache.lucene.store.AlreadyClosedException` - if the Spellchecker is already closed
        `java.io.IOException` - if spellchecker can not open the directory

    - #### setStringDistance

          public void setStringDistance(StringDistance sd)

      Sets the `StringDistance` implementation for this `SpellChecker` instance.
      Parameters:
        `sd` - the `StringDistance` implementation for this `SpellChecker` instance

    - #### getStringDistance

          public StringDistance getStringDistance()

      Returns the `StringDistance` instance used by this `SpellChecker` instance.
      Returns:
        the `StringDistance` instance used by this `SpellChecker` instance.

    - #### setAccuracy

          public void setAccuracy(float minScore)

      Sets the accuracy 0 < minScore < 1; default 0.5

    - #### suggestSimilar

          public java.lang.String[] suggestSimilar(java.lang.String word,
                                                   int numSug)
                                            throws java.io.IOException

      Suggest similar words.

      As the Lucene similarity that is used to fetch the most relevant n-grammed terms is not the same as the edit distance strategy used to calculate the best matching spell-checked word from the hits that Lucene found, one usually has to retrieve a couple of numSug's in order to get the true best match.

      I.e. if numSug == 1, don't count on that suggestion being the best one. Thus, you should set this value to at least 5 for a good suggestion.

      Parameters:
        `word` - the word you want a spell check done on
        `numSug` - the number of suggested words
      Returns:
        String[]
      Throws:
        `java.io.IOException` - if the underlying index throws an `IOException`
        `org.apache.lucene.store.AlreadyClosedException` - if the Spellchecker is already closed

    - #### suggestSimilar

          public java.lang.String[] suggestSimilar(java.lang.String word,
                                                   int numSug,
                                                   org.apache.lucene.index.IndexReader ir,
                                                   java.lang.String field,
                                                   boolean morePopular)
                                            throws java.io.IOException

      Suggest similar words (optionally restricted to a field of an index).

      As the Lucene similarity that is used to fetch the most relevant n-grammed terms is not the same as the edit distance strategy used to calculate the best matching spell-checked word from the hits that Lucene found, one usually has to retrieve a couple of numSug's in order to get the true best match.

      I.e. if numSug == 1, don't count on that suggestion being the best one. Thus, you should set this value to at least 5 for a good suggestion.

      Parameters:
        `word` - the word you want a spell check done on
        `numSug` - the number of suggested words
        `ir` - the indexReader of the user index (can be null see field param)
        `field` - the field of the user index: if field is not null, the suggested words are restricted to the words present in this field.
        `morePopular` - return only the suggest words that are as frequent or more frequent than the searched word (only if restricted mode = (indexReader!=null and field!=null)
      Returns:
        String[] the sorted list of the suggest words with these 2 criteria: first criteria: the edit distance, second criteria (only if restricted mode): the popularity of the suggest words in the field of the user index
      Throws:
        `java.io.IOException` - if the underlying index throws an `IOException`
        `org.apache.lucene.store.AlreadyClosedException` - if the Spellchecker is already closed

    - #### clearIndex

          public void clearIndex()
                          throws java.io.IOException

      Removes all terms from the spell check index.
      Throws:
        `java.io.IOException`
        `org.apache.lucene.store.AlreadyClosedException` - if the Spellchecker is already closed

    - #### exist

          public boolean exist(java.lang.String word)
                        throws java.io.IOException

      Check whether the word exists in the index.
      Parameters:
        `word` -
      Returns:
        true if the word exists in the index
      Throws:
        `java.io.IOException`
        `org.apache.lucene.store.AlreadyClosedException` - if the Spellchecker is already closed

    - #### indexDictionary

          public void indexDictionary(Dictionary dict,
                                      int mergeFactor,
                                      int ramMB)
                               throws java.io.IOException

      Indexes the data from the given `Dictionary`.
      Parameters:
        `dict` - Dictionary to index
        `mergeFactor` - mergeFactor to use when indexing
        `ramMB` - the max amount or memory in MB to use
      Throws:
        `org.apache.lucene.store.AlreadyClosedException` - if the Spellchecker is already closed
        `java.io.IOException`

    - #### indexDictionary

          public void indexDictionary(Dictionary dict)
                               throws java.io.IOException

      Indexes the data from the given `Dictionary`.
      Parameters:
        `dict` - the dictionary to index
      Throws:
        `java.io.IOException`

    - #### close

          public void close()
                     throws java.io.IOException

      Close the IndexSearcher used by this SpellChecker
      Throws:
        `java.io.IOException` - if the close operation causes an `IOException`
        `org.apache.lucene.store.AlreadyClosedException` - if the `SpellChecker` is already closed

Copyright © 2000-2016 Apache Software Foundation. All Rights Reserved.