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

Yuki Yano commented on SOLR-11164:
----------------------------------

[~cpoerschke] [~Jonathan GV] [~ryac]
I investigated these issues and found that {{score=0.0}} has special meaning 
for {{DocTransformer}}.

In SolrCloud, scores are calculated in the first-trip and score fields are 
filled after the second-trip by the distributed node.
https://github.com/apache/lucene-solr/blob/releases/lucene-solr/6.6.0/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java#L1359

By this reason, in the second-trip, {{DocSlice}} is created with empty scores.
https://github.com/apache/lucene-solr/blob/releases/lucene-solr/6.6.0/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java#L356

While transforming documents, scores of {{DocSlice}} is referred by 
{{DocStreamer}} and set {{0.0}} if scores are missing.
https://github.com/apache/lucene-solr/blob/releases/lucene-solr/6.6.0/solr/core/src/java/org/apache/solr/response/DocsStreamer.java#L170

Because {{DocSlice}} doesn't have scores, 0.0 is always passed to 
{{DocTransformer#transform}} as the score. Without {{rq}} parameter, 
{{docsWereNotReranked=true} and this causes the issue reported in 
[SOLR-11180|https://issues.apache.org/jira/browse/SOLR-11180] and 
[SOLR-11220|https://issues.apache.org/jira/browse/SOLR-11220].

In conclusion, there are two problems with transforming 
{{OriginalScoreFeature}} in SolrCloud mode.

1. Without {{rq}}, {{OriginalScoreFeature}} always returns 0.0 because the 
correct score isn't passed to {{DocTransformer#transform}}.

2. With {{rq}}, {{FeatureTransformer}} causes NPE because the original query 
isn't set correctly in {{LTRScoringQuery}}.

> OriginalScoreFeature causes NullPointerException during feature logging with 
> SolrCloud mode.
> --------------------------------------------------------------------------------------------
>
>                 Key: SOLR-11164
>                 URL: https://issues.apache.org/jira/browse/SOLR-11164
>             Project: Solr
>          Issue Type: Bug
>      Security Level: Public(Default Security Level. Issues are Public) 
>          Components: contrib - LTR
>    Affects Versions: 6.6
>            Reporter: Yuki Yano
>         Attachments: SOLR-11164.patch, SOLR-11164.patch
>
>
> In FeatureTransfer, OriginalScoreFeature uses original Query instance 
> preserved in LTRScoringQuery for the evaluation.
> This query is set in RankQuery#wrap during QueryComponent#process.
> With SolrCloud mode, document searches take two steps: finding top-N document 
> ids, and filling documents of found ids.
> In this case, FeatureTransformer works in the second step and tries to 
> extract features with LTRScoringQuery built in QueryComponent#prepare.
> However, because the second step doesn't call QueryComponent#process, the 
> original query of LTRScoringQuery remains null and this causes 
> NullPointerException while evaluating OriginalScoreFeature.
> We can get the original query from ResultContext which is an argument of 
> DocTransformer#setContext, thus this problem can solve by using it if 
> LTRScoringQuery doesn't have correct original query.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to