From 9868907fe771baf8fc43155fa69b5f6342720f90 Mon Sep 17 00:00:00 2001 From: Christine Poerschke Date: Mon, 3 Apr 2017 13:01:16 +0100 Subject: [PATCH] SOLR-10383: Fix debug related NullPointerException in solr/contrib/ltr OriginalScoreFeature class. (Vitezslav Zak, Christine Poerschke) --- solr/CHANGES.txt | 8 ++++++++ .../apache/solr/ltr/feature/OriginalScoreFeature.java | 2 +- .../solr/ltr/feature/TestOriginalScoreFeature.java | 11 +++++++++-- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index d146d274587..c30d7de3122 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -196,6 +196,14 @@ Other Changes * SOLR-9601: Redone DataImportHandler 'tika' example, removing all unused and irrelevant definitions (Alexandre Rafalovitch) +================== 6.5.1 ================== + +Bug Fixes +---------------------- + +* SOLR-10383: Fix debug related NullPointerException in solr/contrib/ltr OriginalScoreFeature class. + (Vitezslav Zak, Christine Poerschke) + ================== 6.5.0 ================== Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release. diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/OriginalScoreFeature.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/OriginalScoreFeature.java index 549880be06e..85fb8fdf5e4 100644 --- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/OriginalScoreFeature.java +++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/OriginalScoreFeature.java @@ -104,7 +104,7 @@ public class OriginalScoreFeature extends Feature { // was already scored in step 1 // we shouldn't need to calc original score again. final DocInfo docInfo = getDocInfo(); - return (docInfo.hasOriginalDocScore() ? docInfo.getOriginalDocScore() : originalScorer.score()); + return (docInfo != null && docInfo.hasOriginalDocScore() ? docInfo.getOriginalDocScore() : originalScorer.score()); } @Override diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestOriginalScoreFeature.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestOriginalScoreFeature.java index 4eb9bea280f..f4c0df1fbf5 100644 --- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestOriginalScoreFeature.java +++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestOriginalScoreFeature.java @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.Map; import org.apache.solr.client.solrj.SolrQuery; +import org.apache.solr.common.params.CommonParams; import org.apache.solr.ltr.FeatureLoggerTestUtils; import org.apache.solr.ltr.TestRerankBase; import org.apache.solr.ltr.model.LinearModel; @@ -106,7 +107,10 @@ public class TestOriginalScoreFeature extends TestRerankBase { final String doc3Score = ((Double) ((Map) ((ArrayList) ((Map) jsonParse .get("response")).get("docs")).get(3)).get("score")).toString(); - final boolean debugQuery = false; + final boolean debugQuery = random().nextBoolean(); + if (debugQuery) { + query.add(CommonParams.DEBUG_QUERY, "true"); + } query.remove("fl"); query.add("fl", "*, score, fv:[fv]"); @@ -142,7 +146,10 @@ public class TestOriginalScoreFeature extends TestRerankBase { } assertJQ("/query" + query.toQueryString(), "/response/docs/["+docIdx+"]/fv=='"+fv+"'"); - // TODO: use debugQuery + if (debugQuery) { + assertJQ("/query" + query.toQueryString(), + "/debug/explain/"+docId+"=='\n"+origScoreFeatureValue+" = LinearModel(name="+modelName+",featureWeights=["+origScoreFeatureName+"=1.0]) model applied to features, sum of:\n "+origScoreFeatureValue+" = prod of:\n 1.0 = weight on feature\n "+origScoreFeatureValue+" = OriginalScoreFeature [query:"+query.getQuery()+"]\n'"); + } } }