Class SpellDictionaryHashMap
- java.lang.Object
-
- com.swabunga.spell.engine.SpellDictionaryASpell
-
- com.swabunga.spell.engine.SpellDictionaryHashMap
-
- All Implemented Interfaces:
SpellDictionary
public class SpellDictionaryHashMap extends SpellDictionaryASpell
The SpellDictionaryHashMap holds the dictionary This class is thread safe. Derived classes should ensure that this preserved. There are many open source dictionary files. For just a few see: http://wordlist.sourceforge.net/ This dictionary class reads words one per line. Make sure that your word list is formatted in this way (most are). Note that you must create the dictionary with a word list for the added words to persist.
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.Hashtable
mainDictionary
The hashmap that contains the word dictionary.-
Fields inherited from class com.swabunga.spell.engine.SpellDictionaryASpell
tf
-
-
Constructor Summary
Constructors Constructor Description SpellDictionaryHashMap()
Dictionary Constructor.SpellDictionaryHashMap(java.io.File wordList)
Dictionary convenience Constructor.SpellDictionaryHashMap(java.io.File wordList, java.io.File phonetic)
Dictionary constructor that uses an aspell phonetic file to build the transformation table.SpellDictionaryHashMap(java.io.File wordList, java.io.File phonetic, java.lang.String phoneticEncoding)
Dictionary constructor that uses an aspell phonetic file to build the transformation table.SpellDictionaryHashMap(java.io.Reader wordList)
Dictionary Constructor.SpellDictionaryHashMap(java.io.Reader wordList, java.io.Reader phonetic)
Dictionary constructor that uses an aspell phonetic file to build the transformation table.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addDictionary(java.io.File wordList)
Add words from a file to existing dictionary hashmap.void
addDictionary(java.io.Reader wordList)
Add words from a Reader to existing dictionary hashmap.protected void
addDictionaryHelper(java.io.BufferedReader in)
Adds to the existing dictionary from a word list file.void
addWord(java.lang.String word)
Add a word permanently to the dictionary (and the dictionary file).protected void
createDictionary(java.io.BufferedReader in)
Constructs the dictionary from a word list file.java.util.List
getWords(java.lang.String code)
Returns a list of strings (words) for the code.boolean
isCorrect(java.lang.String word)
Returns true if the word is correctly spelled against the current word list.protected void
putWord(java.lang.String word)
Allocates a word in the dictionaryprotected void
putWordUnique(java.lang.String word)
Allocates a word, if it is not already present in the dictionary.-
Methods inherited from class com.swabunga.spell.engine.SpellDictionaryASpell
getCode, getSuggestions, getSuggestions
-
-
-
-
Constructor Detail
-
SpellDictionaryHashMap
public SpellDictionaryHashMap() throws java.io.IOException
Dictionary Constructor.- Throws:
java.io.IOException
- indicates a problem with the file system
-
SpellDictionaryHashMap
public SpellDictionaryHashMap(java.io.Reader wordList) throws java.io.IOException
Dictionary Constructor.- Parameters:
wordList
- The file containing the words list for the dictionary- Throws:
java.io.IOException
- indicates problems reading the words list file
-
SpellDictionaryHashMap
public SpellDictionaryHashMap(java.io.File wordList) throws java.io.FileNotFoundException, java.io.IOException
Dictionary convenience Constructor.- Parameters:
wordList
- The file containing the words list for the dictionary- Throws:
java.io.FileNotFoundException
- indicates problems locating the words list file on the systemjava.io.IOException
- indicates problems reading the words list file
-
SpellDictionaryHashMap
public SpellDictionaryHashMap(java.io.File wordList, java.io.File phonetic) throws java.io.FileNotFoundException, java.io.IOException
Dictionary constructor that uses an aspell phonetic file to build the transformation table.- Parameters:
wordList
- The file containing the words list for the dictionaryphonetic
- The file to use for phonetic transformation of the wordlist.- Throws:
java.io.FileNotFoundException
- indicates problems locating the file on the systemjava.io.IOException
- indicates problems reading the words list file
-
SpellDictionaryHashMap
public SpellDictionaryHashMap(java.io.File wordList, java.io.File phonetic, java.lang.String phoneticEncoding) throws java.io.FileNotFoundException, java.io.IOException
Dictionary constructor that uses an aspell phonetic file to build the transformation table. Encoding is used for phonetic file only; default encoding is used for wordList- Parameters:
wordList
- The file containing the words list for the dictionaryphonetic
- The file to use for phonetic transformation of the wordlist.phoneticEncoding
- Uses the character set encoding specified- Throws:
java.io.FileNotFoundException
- indicates problems locating the file on the systemjava.io.IOException
- indicates problems reading the words list or phonetic information
-
SpellDictionaryHashMap
public SpellDictionaryHashMap(java.io.Reader wordList, java.io.Reader phonetic) throws java.io.IOException
Dictionary constructor that uses an aspell phonetic file to build the transformation table.- Parameters:
wordList
- The file containing the words list for the dictionaryphonetic
- The reader to use for phonetic transformation of the wordlist.- Throws:
java.io.IOException
- indicates problems reading the words list or phonetic information
-
-
Method Detail
-
addDictionary
public void addDictionary(java.io.File wordList) throws java.io.FileNotFoundException, java.io.IOException
Add words from a file to existing dictionary hashmap. This function can be called as many times as needed to build the internal word list. Duplicates are not added.Note that adding a dictionary does not affect the target dictionary file for the addWord method. That is, addWord() continues to make additions to the dictionary file specified in createDictionary()
- Parameters:
wordList
- a File object that contains the words, on word per line.- Throws:
java.io.FileNotFoundException
java.io.IOException
-
addDictionary
public void addDictionary(java.io.Reader wordList) throws java.io.IOException
Add words from a Reader to existing dictionary hashmap. This function can be called as many times as needed to build the internal word list. Duplicates are not added.Note that adding a dictionary does not affect the target dictionary file for the addWord method. That is, addWord() continues to make additions to the dictionary file specified in createDictionary()
- Parameters:
wordList
- a Reader object that contains the words, on word per line.- Throws:
java.io.IOException
-
addWord
public void addWord(java.lang.String word)
Add a word permanently to the dictionary (and the dictionary file).This needs to be made thread safe (synchronized)
- Parameters:
word
- The word to add to the dictionary
-
createDictionary
protected void createDictionary(java.io.BufferedReader in) throws java.io.IOException
Constructs the dictionary from a word list file.Each word in the reader should be on a separate line.
This is a very slow function. On my machine it takes quite a while to load the data in. I suspect that we could speed this up quite allot.
- Throws:
java.io.IOException
-
addDictionaryHelper
protected void addDictionaryHelper(java.io.BufferedReader in) throws java.io.IOException
Adds to the existing dictionary from a word list file. If the word already exists in the dictionary, a new entry is not added.Each word in the reader should be on a separate line.
Note: for whatever reason that I haven't yet looked into, the phonetic codes for a particular word map to a vector of words rather than a hash table. This is a drag since in order to check for duplicates you have to iterate through all the words that use the phonetic code. If the vector-based implementation is important, it may be better to subclass for the cases where duplicates are bad.
- Throws:
java.io.IOException
-
putWord
protected void putWord(java.lang.String word)
Allocates a word in the dictionary- Parameters:
word
- The word to add
-
putWordUnique
protected void putWordUnique(java.lang.String word)
Allocates a word, if it is not already present in the dictionary. A word with a different case is considered the same.- Parameters:
word
- The word to add
-
getWords
public java.util.List getWords(java.lang.String code)
Returns a list of strings (words) for the code.- Specified by:
getWords
in classSpellDictionaryASpell
- Parameters:
code
- The phonetic code common to the list of words- Returns:
- A list of words having the same phonetic code
-
isCorrect
public boolean isCorrect(java.lang.String word)
Returns true if the word is correctly spelled against the current word list.- Specified by:
isCorrect
in interfaceSpellDictionary
- Overrides:
isCorrect
in classSpellDictionaryASpell
- Parameters:
word
- The word to verify if it's spelling is OK.- Returns:
- Indicates if the word is present in the dictionary.
-
-