[ 
https://issues.apache.org/jira/browse/SOLR-10513?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16411954#comment-16411954
 ] 

Varun Thacker commented on SOLR-10513:
--------------------------------------

Thanks Amrit for the patch and  Abhishek for the analysis!

If I understand this correctly there are 2 issues here:

Issue1: If you add 2 spellcheckers and both are configured with 
LuceneLevenshteinDistance then an exception will be thrown but it shouldn't. 
This is because the equals method has not been overriden. So this will fail. 

The test doesn't need to add a third spell checker and also should probably 
implement toString in LuceneLevenshteinDistance ?
{code:java}
cssc = new ConjunctionSolrSpellChecker();
levenstein1 = new MockSolrSpellChecker(new LuceneLevenshteinDistance());
levenstein2 = new MockSolrSpellChecker(new LuceneLevenshteinDistance());

cssc.addChecker(levenstein1);
cssc.addChecker(levenstein2);

{code}
Issue2: This should be an init failure and not during a query. Maybe 
ConjunctionSolrSpellChecker could have a constructor that takes a 
stringDistance and accuracy and avoids all these checks? Let's spin that off in 
other Jira and discuss there.

 

Also while we're working on this patch can we validate the 
accuracy/queryAnalyzer checks works as expected and have a test for that?

 

> CLONE - ConjunctionSolrSpellChecker wrong check for same string distance
> ------------------------------------------------------------------------
>
>                 Key: SOLR-10513
>                 URL: https://issues.apache.org/jira/browse/SOLR-10513
>             Project: Solr
>          Issue Type: Bug
>          Components: spellchecker
>    Affects Versions: 4.9
>            Reporter: Abhishek Kumar Singh
>            Assignee: James Dyer
>            Priority: Major
>             Fix For: 5.5
>
>         Attachments: SOLR-10513.patch, SOLR-10513.patch
>
>
> See ConjunctionSolrSpellChecker.java
> try {
>       if (stringDistance == null) {
>         stringDistance = checker.getStringDistance();
>       } else if (stringDistance != checker.getStringDistance()) {
>         throw new IllegalArgumentException(
>             "All checkers need to use the same StringDistance.");
>       }
>     } catch (UnsupportedOperationException uoe) {
>       // ignore
>     }
> In line stringDistance != checker.getStringDistance() there is comparing by 
> references. So if you are using 2 or more spellcheckers with same distance 
> algorithm, exception will be thrown anyway.
> *Update:* As of Solr 6.5, this has been changed to 
> *stringDistance.equals(checker.getStringDistance())* .
> However, *LuceneLevenshteinDistance* does not even override equals method. 
> This does not solve the problem yet, because the *default equals* method 
> anyway compares references.
> Hence unable to use *FileBasedSolrSpellChecker* .  
> Moreover, Some check of similar sorts should also be in the init method. So 
> that user does not have to wait for this error during query time. If the 
> spellcheck components have been added *solrconfig.xml* , it should throw 
> error during core-reload itself.  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to