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

James Dyer commented on SOLR-10395:
-----------------------------------

[~fsteggink]  

bq. What does the 0 do?
I thought it was one of your query terms.  So it doesn't do anything.

bq. triggering a rare condition
Its not so rare and lots of people run into problems like this.  The spellcheck 
field needs intact keywords like the user enters to compare user input to 
possible corrections.  Heavy analysis like stemming and grams break this 
assumption.  The spellchecker also needs to extract the actual keywords from 
the query string without having access to the actual query parser that was 
used.  This is where the SpellingQueryConverter comes in.  But the 
SpellingQueryConverter has limitations.  The use of this class rather than 
getting the actual keywords from the real query parser is, in my opinion, a 
weakness of Solr's spellchecker.

Looking a little closer, I think another way to work around this is to move the 
"type" part of the query to a "fq" and just query the user's keywords in the 
"q" parameter.  While I can't reproduce the NPE, I can get it to suggest for 
"or" and "type", which is also incorrect.  Once again, the 
SpellingQueryConverter assumes a query is either a boolean-type query or its a 
dismax-type query.  It doesn't know all the nuances of edismax. 

bq. q=menweg beingen 0&fq=(type:weg OR type:adres)

> NPE during spell check with result collation
> --------------------------------------------
>
>                 Key: SOLR-10395
>                 URL: https://issues.apache.org/jira/browse/SOLR-10395
>             Project: Solr
>          Issue Type: Bug
>      Security Level: Public(Default Security Level. Issues are Public) 
>          Components: spellchecker
>    Affects Versions: 6.2.1
>            Reporter: Frank Steggink
>
> I'm getting a NullPointerException when using collation during spell check. 
> This is the message I'm getting: Exception trying to re-query to check if a 
> spell check possibility would return any hits.
> Stack trace:
> {code}
> 2017-03-13 13:05:54.618 WARN (qtp472654579-84) [c:locatieserver s:dkk 
> r:core_node4 x:locatieserver_dkk_replica2] o.a.s.s.SpellCheckCollator 
> Exception trying to re-query to check if a spell check possibility would 
> return any hits.
> java.lang.NullPointerException
> at 
> org.apache.solr.spelling.SpellCheckCollator.collate(SpellCheckCollator.java:150)
> at 
> org.apache.solr.handler.component.SpellCheckComponent.addCollationsToResponse(SpellCheckComponent.java:297)
> at 
> org.apache.solr.handler.component.SpellCheckComponent.process(SpellCheckComponent.java:209)
> at 
> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:295)
> at 
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:154)
> at org.apache.solr.core.SolrCore.execute(SolrCore.java:2089)
> ...
> {code}
> My spell check config for this search handler:
> {code:xml}
>             <str name="spellcheck">on</str>
>             <str name="spellcheck.dictionary">suggest</str>
>             <str name="spellcheck.extendedResults">false</str>
>             <str name="spellcheck.count">5</str>
>             <str name="spellcheck.alternativeTermCount">2</str>
>             <str name="spellcheck.maxResultsForSuggest">3</str>
>             <str name="spellcheck.collate">true</str>
>             <str name="spellcheck.collateExtendedResults">true</str>
>             <str name="spellcheck.maxCollationTries">5</str>
>             <str name="spellcheck.maxCollations">3</str>
> {code}
> The field "suggest" is a field in the index, which is also (usually) queried 
> with this search handler. The field is filled with lots of data created by 
> edge ngrams, since it's intended usage is for an autocomplete field.
> This issue is very similar to SOLR-8807, but the NPE is occurring one line in 
> the code later 
> (solr\core\src\java\org\apache\solr\spelling\SpellCheckCollator.java). As a 
> result the patch attached to that issue probably won't work in my case.
> {code:java}
>         try {
>           queryComponent.prepare(checkResponse);
>           if (docCollectionLimit > 0) {
>             int f = checkResponse.getFieldFlags();
>             checkResponse.setFieldFlags(f |= 
> SolrIndexSearcher.TERMINATE_EARLY);            
>           }
>           queryComponent.process(checkResponse);
>           hits = (Integer) checkResponse.rsp.getToLog().get("hits");
>         } catch (EarlyTerminatingCollectorException etce) {
> {code}
> Although I'm using Solr 6.2.1, the source file is still identical to Solr 
> 6.5.0.
> The line causing my exception is when determining the hits. -I've noticed the 
> exception only occurs when no more than 2 alternatives are found, but when 3 
> alternatives (maxCollations) are found, the NPE isn't occurring.-
> As a workaround I could live for now with turning collations off. (Update: 
> I've suppressed logging of these exceptions in log4j.properties.)
> Please let me know if you need more information. Thanks!



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

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

Reply via email to