Simone,

You can set up a "master" dictionary but with a few caveats.  What you'll need 
to do is <copyfield> all of the fields you want to include in your "master" 
dictionary into one field and base your IndexBasedSpellChecker dictionary on 
that.  In addition, I would recommend you use the "collate" feature and set 
"spellcheck.maxCollationTries" to something greater than zero (5-10 is usually 
good).  Otherwise, you probably will get a lot of ridiculous suggestions from 
it trying to correct words from one field with values from another.  See 
http://wiki.apache.org/solr/SpellCheckComponent#spellcheck.collate for more 
information.

There is still a big problem with approach, however.  Unless you set 
"onlyMorePopular=true", Solr will never suggest a correction for a word that 
exists in the dictionary.  By creating a huge "master" dictionary, you will be 
increasing the chances that Solr will assume your users' misspelled words are 
in fact correct.  One way to work around this is instead of blindly using 
"copyField", to hand-pick a subset of your terms for the master field on which 
you base your dictionary.  Another workaround is to use "onlyMorePopular", 
although this has its own problems.  See the discussion for SOLR-2585 
(https://issues.apache.org/jira/browse/SOLR-2585), which aims to solve these 
problems.

James Dyer
E-Commerce Systems
Ingram Content Group
(615) 213-4311


-----Original Message-----
From: simone.trip...@gmail.com [mailto:simone.trip...@gmail.com] On Behalf Of 
Simone Tripodi
Sent: Tuesday, October 18, 2011 7:06 AM
To: solr-user@lucene.apache.org
Subject: IndexBasedSpellChecker on multiple fields

Hi all guys,
I need to configure the IndexBasedSpellChecker that uses more than
just one field as a spelling dictionary, is it possible to achieve?
In the meanwhile I configured two spellcheckers and let users switch
from a checkeer to another via params on GET request, but looks like
people are not particularly happy about it...
The main problem is that fields I need to speel contain different
informations, I mean the intersection between the two sets could be
empty.
Many thanks in advance, all the best!
Simo

http://people.apache.org/~simonetripodi/
http://simonetripodi.livejournal.com/
http://twitter.com/simonetripodi
http://www.99soft.org/

Reply via email to