OK I looked at the SpellChecker code from the Lucene contrib) and there is no trivial way to integrate it more nicely into Hibernate Search. They did not really plan for flexibility.
But it's doable to fork this code and make a spellchecker feature in Hibernate Search. Here are a few limitations they have that we need to remove. Here is a proposal.
- more than one field and even more than one index should be the source of the dictionary
- declaring which field is part of a dictionary should be declarative @AddToDictionary(name="main-dictionary") (with probably an optional field name(s))
- for a given dictionary name, we need to associate an index and probably a field prefix (to share the same index for all dictionaries). This couold be by annotations or in the configuration (not sure)
- this index should be kept like any other DirectoryProvider in the HSearch intrastructure (we could then reuse ReaderProvider internally and don't have leaks).
- we will probably add a manual dictionary reindex method and the SpellChecker API should be in the SearchFactory.
sf.getDictionary("main-dictionary").spellcheck(word, suggestion);
sf.getDictionary("main-dictionary").spellcheck(word, suggestion, entity, properties...); //not sure how useful is this one really
sf.getDictionary("main-dictionary").reindex();
Of course this needs to be refined.
This is probably 3 or 4 days of work but unfortunately we cannot do that for the book it seems. I would be wort mentioning in the section that a more integrated solution in on it's way.
On Sep 12, 2008, at 09:15, John Griffin wrote:
Here's the file as a zip. Maybe the pdf wasn't passing.
Also, Nermina pointed out to me that I skipped section 7.3. So ANY reference