I'm playing with the new code checked in under SOLR-572 (compliments to everyone who worked on that!) and am having a couple of problems. I'm running on Windows under Tomcat 5.5.25.
1. Just in comparison with the old SpellCheckerRequestHandler methodology, when I specified in solrconfig.xml <str name="sp.dictionary.indexDir">spell</str> it built the spelling index under my solr/data directory as c:/solr/data/spell. My solr home is configured in server.xml for tomcat via: <Context ... <Environment name="solr/home" type="java.lang.String" value="C:/solr" override="true" /> </Context> Under the new handler, setting the analogous (I think) parameter <str name="spellcheckIndexDir">spell</str> drops the spell index directory in my tomcat install directory C:/Program Files/Apache Software Foundation/Tomcat 5.5/spell rather than my solr/data. Should I configure my solr/home differently or can this be made to work as before? The previous solr/data default on an unqualified parameter value was a good one for keeping the index files in the same location. 2. I'm having difficulty getting the FileBasedSpellChecker to work -- probably something silly on my part but given the above I thought there might be container differences that haven't been vetted. Here is my config: <searchComponent name="spellcheck" class="org.apache.solr.handler.component.SpellCheckComponent"> <lst name="defaults"> <!-- omp = Only More Popular --> <str name="spellcheck.onlyMorePopular">false</str> <!-- exr = Extended Results --> <str name="spellcheck.extendedResults">false</str> <!-- The number of suggestions to return --> <str name="spellcheck.count">1</str> </lst> <str name="queryAnalyzerFieldType">spell</str> <lst name="spellchecker"> <str name="name">default</str> <str name="field">dictionary</str> <str name="classname">org.apache.solr.spelling.IndexBasedSpellChecker</str> <str name="spellcheckIndexDir">spellchecker</str> </lst> <lst name="spellchecker"> <str name="classname">org.apache.solr.spelling.FileBasedSpellChecker</str> <str name="name">external</str> <str name="sourceLocation">spellings.txt</str> <str name="characterEncoding">UTF-8</str> <str name="spellcheckIndexDir">spellchecker2</str> </lst> </searchComponent> <queryConverter name="queryConverter" class="org.apache.solr.spelling.SpellingQueryConverter"/> <requestHandler name="/spellCheckCompRH" class="org.apache.solr.handler.component.SearchHandler"> <arr name="last-components"> <str>spellcheck</str> </arr> </requestHandler> spellings.txt contains: pizza history http://localhost/solr/spellCheckCompRH?spellcheck=true&q=pizzza&spellcheck.dictionary=default&spellcheck.build=true gives me a suggestion of pizza, works wonderfully. http://localhost/solr/spellCheckCompRH?spellcheck=true&q=pizzza&spellcheck.dictionary=external&spellcheck.build=true gives me no suggestions. (Even with a more fleshed out dictionary file, I haven't been able to get suggestions for any query I've tried for the external dictionary.) In both cases I can see the indexes getting rebuilt, and the size of external index varies with the size of my spellings.txt, so I know that the contents of spellings.txt is getting indexed (and peeking into the segment files, I see the text entries). It is as if everything is getting set up correctly but the actual index is coming up empty at query time. Any suggestions for what I might be doing wrong? Thanks! Ron