Hi James,

The request /spellcheck?spellcheck=true&spellcheck.q=quiam&spellcheck.dictionary=fuzzy2 returns

quidam, quam, quia, quoniam, quidem, quadam, quodam, quoad, quedam, quis, quae, quas, quem, quid, quin, qui, qua

Replacing quiam (not in the index) by quidam (in the index) returns nothing at all, but I want it to return

quidam, quam, quia, quidem, quadam, quodam, quedam, ...

When I was using the same parameters with IndexBasedSpellChecker, by setting a high alternativeTermCount, I got results for both. But as I said, then I can't differentiate the different maxEdits.

The request handler is:

<requestHandler name="/spellcheck" class="org.apache.solr.handler.component.SearchHandler">
   <lst name="defaults">
     <str name="spellcheck.dictionary">fuzzy1</str>
     <str name="spellcheck.count">20</str>
     <int name="spellcheck.alternativeTermCount">1000000</int>
   </lst>
   <arr name="last-components">
     <str>fuzzyterms</str>
   </arr>
 </requestHandler>

Thanks!

Nathaniel

On Mon, Sep 22, 2014 at 4:08 , Dyer, James <james.d...@ingramcontent.com> wrote:
Nathaniel,

Can you show us all of the parameters you are sending to the spellchecker? When you specify "alternativeTermCount" with "spellcheck.q=quidam", what are the terms you expect to get back? Also, are you getting any query results back? If you are using a "q" that returns results, or more results than you specify for "spellcheck.maxResultsForSuggest", spellcheck won't give you anything regardless of what you put for "spellcheck.q".

James Dyer
Ingram Content Group
(615) 213-4311


-----Original Message-----
From: Nathaniel Rudavsky-Brody [mailto:nathaniel.rudav...@gmail.com] Sent: Monday, September 22, 2014 8:08 AM
To: solr-user@lucene.apache.org
Subject: fuzzy terms, DirectSolrSpellChecker and alternativeTermCount

Hello,

I'm trying find the best way to "fake" the terms component for fuzzy queries. That is, I need the full set of index terms for each of the two queries "quidam~1" and "quidam~2".

I tried defining two suggesters with FuzzyLookupFactory, with maxEdits=1 and 2 respectively, but the results for "quidam~1" include suffixes like "quodammodo", which makes sense for a suggester but isn't what I want here.

Now I'm trying with the spell-checker. As far as I can see, IndexBasedSpellChecker doesn't let me set maxEdits, so I can't use it to distinguish between my two queries. DirectSolrSpellChecker seems like it should work, ie:

  <searchComponent name="fuzzyterms" class="solr.SpellCheckComponent">
    <lst name="spellchecker">
      <str name="name">fuzzy1</str>
      <str name="classname">solr.DirectSolrSpellChecker</str>
         <int name="maxEdits">1</int>
        ...
    </lst>
    <lst name="spellchecker">
      <str name="name">fuzzy2</str>
      <str name="classname">solr.DirectSolrSpellChecker</str>
         <int name="maxEdits">2</int>
    ...
    </lst>
  </searchComponent>

However the parameter spellcheck.alternativeTermCount has no effect, so the query "spellcheck.q=quidam" gives no results, but "spellcheck.q=quiam" (which doesn't exist in the index) gives the expected terms.

Am I missing something? Or is there a better way to do this?

Many thanks for any help and ideas,

Nathaniel

Reply via email to