+++ /dev/null
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="Author" content="IBM">
- <meta name="GENERATOR" content="Mozilla/4.51 [en] (WinNT; I) [Netscape]">
- <title>Package-level Javadoc</title>
-</head>
-<body>
-Provides the core functionality for spell-checking documents
-<h2>
-Package Specification</h2>
-This package provides the interfaces for the notions of dictionary, edit distance, phonetic hash,
-spell event and spell-check iterator. For most of these interfaces a default implementation
-for english languages is provided. These implementations can be reused in custom dictionaries or
-spell-check iterators, or replaced by more specialized algorithms for a particular group of languages.
-<h3>
-Spell Check Engine</h3>
-The central point to access the spell-checker functionality is the interface <tt>ISpellCheckEngine</tt>.
-Implementations of this interface provide support for life-cycle management, registering and unregistering
-dictionaries, changing the locale of the engine and creating a spell-checker for a specific language.
-<p>
-The following steps are needed to obtain a spell-checker for a specific language:
-<ul>
-<li>Create an instance of <tt>ISpellCheckEngine</tt>. In this package, no default implementation is provided,
-since the management of the dictionary registering and loading is application dependent. Usually, instances
-of <tt>ISpellCheckEngine</tt> are implemented as singletons.</li>
-<li>Create the appropriate dictionaries that should be used during the spell-check process. All dictionaries that
-can be registered with <tt>ISpellCheckEngine</tt> must implement the interface <tt>ISpellCheckDictionary</tt>.
-For this interface, an abstract implementation is provided in the class <tt>AbstractSpellDictionary</tt>.
-Depending on the language of the words contained in this dictionary, custom algorithms for the phonetic hash
- (<tt>IPhoneticHashProvider</tt>) and the edit distance (<tt>IPhoneticDistanceAlgorithm</tt>) should be implemented
- and registered with the dictionary.</li>
- <li>Instances of spell-checkers can now be created by calling <tt>createSpellChecker(Locale)</tt>, where the locale
- denotes the language that the spell-checker should use while executing.</li>
-</ul>
-When requesting a new spell-checker with a different locale via <tt>createSpellChecker(Locale)</tt>, the spell-checker is
-reconfigured with the new dictionaries. More concretely, the old dictionary is unregistered and a new one registered for the
-desired locale is associated with the spell-checker. If no such dictionary is available, no spell-checker is returned and
-the locale of the engine is reset to its default locale.
-<h3>
-Dictionaries</h3>
-Dictionaries are the data structures to hold word lists for a particular language. All implementations of dictionaries must
-implement the interface <tt>ISpellDictionary</tt>. It provides support for life-cycle management as well as the facility to query
-words from the list, add words to the list and get correction proposals for incorrectly spelt words.
-<p>
-This package provides a default implementation of a dictionary (<tt>AbstractSpellDictionary</tt>) that uses algorithms
-convenient for english languages. <br>
-Every dictionary needs two kinds of algorithms to be plugged in:
-<ul>
-<li>An edit distance algorithm: Edit distance algorithms implement the interface <tt>IPhoneticDistanceAlgorithm</tt>. The algorithm
-is used to determine the similarity between two words. This package provides a default implementation for languages using the latin alphabet (<tt>DefaultPhoneticDistanceAlgorithm</tt>).
-The default algorithm uses the Levenshtein text edit distance.</li>
-<li>A hash algorithm: Phonetic hash providers implement the interface <tt>IPhoneticHashProvider</tt>. The purpose of
-phonetic hashes is to have a representation of words which allows comparing it to other, similar words. This package provides a default
-implementation which is convenient for slavic and english languages. It uses the double metaphone algorithm by published
-Lawrence Philips.</li>
-</ul>
-By plugging in custom implementations of one or both of these algorithms the abstract implementation <tt>AbstractSpellDictionary</tt> can
-be customized to specified languages and alphabets.
-<h3>
-Spell Check Iterators</h3>
-Instances of <tt>ISpellChecker</tt> are usually language-, locale- and medium independent implementations and therefore need an input provider. The
-interface <tt>ISpellCheckIterator</tt> serves this purpose by abstracting the tokenizing of text media to a simple iteration. The actual spell-check process
-is launched by calling <tt>ISpellChecker#execute(ISpellCheckIterator)</tt>. This method uses the indicated spell-check iterator to determine the
-words that are to be spell-checked. This package provides no default implementation of a spell-check iterator.
-<h3>
-Event Handling</h3>
-To communicate the results of a spell-check pass, spell-checkers fire spell events that inform listeners about the status
-of a particular word being spell-checked. Instances that are interested in receiving spell events must implement
-the interface <tt>ISpellEventListener</tt> and register with the spell-checker before the spell-check process starts.<p>
-A spell event contains the following information:
-<ul>
-<li>The word being spell-checked</li>
-<li>The begin index of the current word in the text medium</li>
-<li>The end index in the text medium</li>
-<li>A flag whether this word was found in one of the registered dictionaries</li>
-<li>A flag that indicates whether this word starts a new sentence</li>
-<li>The set of proposals if the word was not correctly spelt. This information is lazily computed.</li>
-</ul>
-Spell event listeners are free to handle the events in any way. However, listeners are not allowed to block during
-the event handling unless the spell-checking process happens in another thread.
-</body>
-</html>