## 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
`static java.lang.String` `F_WORD` Field name for each word in the ngram index.

Constructor Summary
`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
`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-2011 Apache Software Foundation. All Rights Reserved.