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

Reply via email to