Details
-
Improvement
-
Status: Patch Available
-
Major
-
Resolution: Unresolved
-
9.0
-
None
-
None
Description
In SolrCloud, two-stage shard requests are processed. The first stage is to execute the query return unique keys and scores of documents. Then, in the second stage, collect fields’ values of merged top documents. LTRInterleavingTransformerFactory should be run in the first stage (ResponseBuilder.STAGE_EXECUTE_QUERY), because the LTRInterleavingScoringQuery knows which model is used in scoring. However, it’s run in second stage(ResponseBuilder.STAGE_GET_FIELDS) and LTRInterleavingRescorer#rescore is skipped in second stage. LTRInterleavingTransformerFactory cannot handle this case, so thrown NullPointerException when fl=[interleaving] is specified in SolrCloud. There is a same problem in LTRFeatureLoggerTransformerFactory. But, if interleaving is not used, LTRFeatureLoggerTransformerFactory falls back when feature vector cache is not hit (i.e. in second stage).
I will fix the NullPointerException problem, but the underlying solution should be discussed. One of the solution of this problem is disable two-stage request by distrib.singlePass=true parameter.
Attachments
Issue Links
- links to