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

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

[~fsteggink]  If you're using a custom QueryParser, you probably cannot use the 
default SpellingQueryConverter, but need to write one that pairs with the 
QueryParser you're using.

But an easier solution would be to use the "spellcheck.q" parameter, like this:

/suggest?q=matenweg beuningen 0(type:weg or type:adres)&spellcheck.q=matenweg 
beuningen 0

...but actually, for spellcheck to work well, you might need to <copyField /> 
your data to a field that is not analyzed with ngrams but just is split on 
whitespace and use that as the field you check spelling against.

The only real bug I see here is the lack of a good error message for cases like 
this.  The spellchecker is not meant to be used with custom query parsers or 
heavily-analyzed fields, so its not surprising to me you're running into 
trouble.

> 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