I ran into a similar issue and found that I am able to get around it by:

1. Similar to what https://issues.apache.org/jira/browse/SOLR-622 will do,
issue a spellcheck.reload=true command on the firstSearcher event to read
any existing index off disk. Here are the relevant parts of my
solrconfig.xml:

  <listener event="firstSearcher" class="solr.QuerySenderListener">
    <arr name="queries">
      <lst> 
        <str name="qt">myHandler</str>
        <str name="q">*:*</str>
        <str name="rows">0</str>
        <str name="spellcheck">true</str>
        <str name="spellcheck.reload">true</str>
      </lst>
    </arr>
  </listener>
  <requestHandler name="myHandler" ...>
    ...     
    <arr name="last-components">
      <str>spellcheck</str>
    </arr>
  </requestHandler>
  <searchComponent name="spellcheck" class="...SpellCheckComponent">
    <lst name="spellchecker">
      <str name="name">default</str>
      <str name="field">name_spell</str>
      ...
    </lst>
    <str name="queryAnalyzerFieldType">text_spell</str>
  </searchComponent>


2. I believe there is a bug in IndexBased- and FileBasedSpellChecker.java
where the analyzer variable is only set on the build command. Therefore,
when the index is reloaded, but not built after starting solr, issuing a
query with the spellcheck.q parameter will cause a NullPointerException to
be thrown (SpellCheckComponent.java:158). Moving the analyzer logic to the
constructor seems to fix the problem.

I did not see a jira ticket for this (nor am I sure it's a real bug :), so I
have attached a patch with these changes. Please let me know if I have
overlooked something here and if I should attach this to an actual ticket.

-Jonathan


> From: Geoffrey Young <[EMAIL PROTECTED]>
> Reply-To: <solr-user@lucene.apache.org>
> Date: Tue, 22 Jul 2008 11:07:41 -0400
> To: <solr-user@lucene.apache.org>
> Subject: Re: spellchecker problems (bugs)
> 
> 
> 
> Shalin Shekhar Mangar wrote:
>> The problems you described in the spellchecker are noted in
>> https://issues.apache.org/jira/browse/SOLR-622 -- I shall create an issue to
>> synchronize spellcheck.build so that the index is not corrupted.
> 
> I'd like to discuss this a little...
> 
> I'm not sure that I want to rebuild the spelling index each time the
> underlying data index changes - the process takes very long and my
> updates are frequent changes to non-spelling related data.
> 
> what I'd really like is for a change to my index to not cause an
> exception.  IIRC the "old" way of using a spellchecker didn't work like
> this at all - I could completely rm data/index and leave data/spell in
> place, add new data, not issue cmd=build and the spelling parts still
> worked just fine (albeit with old data).
> 
> not to say that SOLR-622 isn't a good idea (it is) but I don't really
> think the entire solution is keeping the spellcheck index in sync.  do
> they need to be kept in sync for things not to implode on me?
> 
> --Geoff

Reply via email to