You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by cp...@apache.org on 2017/04/03 12:49:47 UTC
[1/3] lucene-solr:branch_6_5: SOLR-10383: reduce code duplication in
TestOriginalScoreFeature
Repository: lucene-solr
Updated Branches:
refs/heads/branch_6_5 7ab4291fb -> 94ca740f3
SOLR-10383: reduce code duplication in TestOriginalScoreFeature
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/cf7f0c06
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/cf7f0c06
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/cf7f0c06
Branch: refs/heads/branch_6_5
Commit: cf7f0c0670b2b670afb28fc93a72901d22473f7a
Parents: 7ab4291
Author: Christine Poerschke <cp...@apache.org>
Authored: Mon Apr 3 12:10:09 2017 +0100
Committer: Christine Poerschke <cp...@apache.org>
Committed: Mon Apr 3 13:35:52 2017 +0100
----------------------------------------------------------------------
.../ltr/feature/TestOriginalScoreFeature.java | 113 +++++++++----------
1 file changed, 56 insertions(+), 57 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/cf7f0c06/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestOriginalScoreFeature.java
----------------------------------------------------------------------
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 d651224..4eb9bea 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
@@ -53,51 +53,10 @@ public class TestOriginalScoreFeature extends TestRerankBase {
@Test
public void testOriginalScore() throws Exception {
loadFeature("score", OriginalScoreFeature.class.getCanonicalName(), "{}");
-
loadModel("originalScore", LinearModel.class.getCanonicalName(),
new String[] {"score"}, "{\"weights\":{\"score\":1.0}}");
- final SolrQuery query = new SolrQuery();
- query.setQuery("title:w1");
- query.add("fl", "*, score");
- query.add("rows", "4");
- query.add("wt", "json");
-
- // Normal term match
- assertJQ("/query" + query.toQueryString(), "/response/numFound/==4");
- assertJQ("/query" + query.toQueryString(), "/response/docs/[0]/id=='1'");
- assertJQ("/query" + query.toQueryString(), "/response/docs/[1]/id=='8'");
- assertJQ("/query" + query.toQueryString(), "/response/docs/[2]/id=='6'");
- assertJQ("/query" + query.toQueryString(), "/response/docs/[3]/id=='7'");
-
- final String res = restTestHarness.query("/query" + query.toQueryString());
- final Map<String,Object> jsonParse = (Map<String,Object>) ObjectBuilder
- .fromJSON(res);
- final String doc0Score = ((Double) ((Map<String,Object>) ((ArrayList<Object>) ((Map<String,Object>) jsonParse
- .get("response")).get("docs")).get(0)).get("score")).toString();
- final String doc1Score = ((Double) ((Map<String,Object>) ((ArrayList<Object>) ((Map<String,Object>) jsonParse
- .get("response")).get("docs")).get(1)).get("score")).toString();
- final String doc2Score = ((Double) ((Map<String,Object>) ((ArrayList<Object>) ((Map<String,Object>) jsonParse
- .get("response")).get("docs")).get(2)).get("score")).toString();
- final String doc3Score = ((Double) ((Map<String,Object>) ((ArrayList<Object>) ((Map<String,Object>) jsonParse
- .get("response")).get("docs")).get(3)).get("score")).toString();
-
- query.add("fl", "[fv]");
- query.add("rq", "{!ltr model=originalScore reRankDocs=4}");
-
- assertJQ("/query" + query.toQueryString(), "/response/numFound/==4");
- assertJQ("/query" + query.toQueryString(), "/response/docs/[0]/id=='1'");
- assertJQ("/query" + query.toQueryString(), "/response/docs/[0]/score=="
- + doc0Score);
- assertJQ("/query" + query.toQueryString(), "/response/docs/[1]/id=='8'");
- assertJQ("/query" + query.toQueryString(), "/response/docs/[1]/score=="
- + doc1Score);
- assertJQ("/query" + query.toQueryString(), "/response/docs/[2]/id=='6'");
- assertJQ("/query" + query.toQueryString(), "/response/docs/[2]/score=="
- + doc2Score);
- assertJQ("/query" + query.toQueryString(), "/response/docs/[3]/id=='7'");
- assertJQ("/query" + query.toQueryString(), "/response/docs/[3]/score=="
- + doc3Score);
+ implTestOriginalScoreResponseDocsCheck("originalScore", "score", null, null);
}
@Test
@@ -111,12 +70,29 @@ public class TestOriginalScoreFeature extends TestRerankBase {
new String[] {"origScore"}, "store2",
"{\"weights\":{\"origScore\":1.0}}");
+ implTestOriginalScoreResponseDocsCheck("origScore", "origScore", "c2", "2.0");
+ }
+
+ public static void implTestOriginalScoreResponseDocsCheck(String modelName,
+ String origScoreFeatureName,
+ String nonScoringFeatureName, String nonScoringFeatureValue) throws Exception {
+
final SolrQuery query = new SolrQuery();
query.setQuery("title:w1");
- query.add("fl", "*, score, fv:[fv]");
+ query.add("fl", "*, score");
query.add("rows", "4");
query.add("wt", "json");
- query.add("rq", "{!ltr model=origScore reRankDocs=4}");
+
+ final int doc0Id = 1;
+ final int doc1Id = 8;
+ final int doc2Id = 6;
+ final int doc3Id = 7;
+
+ assertJQ("/query" + query.toQueryString(), "/response/numFound/==4");
+ assertJQ("/query" + query.toQueryString(), "/response/docs/[0]/id=='"+doc0Id+"'");
+ assertJQ("/query" + query.toQueryString(), "/response/docs/[1]/id=='"+doc1Id+"'");
+ assertJQ("/query" + query.toQueryString(), "/response/docs/[2]/id=='"+doc2Id+"'");
+ assertJQ("/query" + query.toQueryString(), "/response/docs/[3]/id=='"+doc3Id+"'");
final String res = restTestHarness.query("/query" + query.toQueryString());
final Map<String,Object> jsonParse = (Map<String,Object>) ObjectBuilder
@@ -130,20 +106,43 @@ public class TestOriginalScoreFeature extends TestRerankBase {
final String doc3Score = ((Double) ((Map<String,Object>) ((ArrayList<Object>) ((Map<String,Object>) jsonParse
.get("response")).get("docs")).get(3)).get("score")).toString();
+ final boolean debugQuery = false;
+
+ query.remove("fl");
+ query.add("fl", "*, score, fv:[fv]");
+ query.add("rq", "{!ltr model="+modelName+" reRankDocs=4}");
+
assertJQ("/query" + query.toQueryString(), "/response/numFound/==4");
- assertJQ("/query" + query.toQueryString(), "/response/docs/[0]/id=='1'");
- assertJQ("/query" + query.toQueryString(),
- "/response/docs/[0]/fv=='" + FeatureLoggerTestUtils.toFeatureVector("origScore", doc0Score, "c2", "2.0")+"'");
- assertJQ("/query" + query.toQueryString(), "/response/docs/[1]/id=='8'");
-
- assertJQ("/query" + query.toQueryString(),
- "/response/docs/[1]/fv=='" + FeatureLoggerTestUtils.toFeatureVector("origScore", doc1Score, "c2", "2.0")+"'");
- assertJQ("/query" + query.toQueryString(), "/response/docs/[2]/id=='6'");
- assertJQ("/query" + query.toQueryString(),
- "/response/docs/[2]/fv=='" + FeatureLoggerTestUtils.toFeatureVector("origScore", doc2Score, "c2", "2.0")+"'");
- assertJQ("/query" + query.toQueryString(), "/response/docs/[3]/id=='7'");
- assertJQ("/query" + query.toQueryString(),
- "/response/docs/[3]/fv=='" + FeatureLoggerTestUtils.toFeatureVector("origScore", doc3Score, "c2", "2.0")+"'");
+ assertJQ("/query" + query.toQueryString(), "/response/docs/[0]/id=='"+doc0Id+"'");
+ assertJQ("/query" + query.toQueryString(), "/response/docs/[1]/id=='"+doc1Id+"'");
+ assertJQ("/query" + query.toQueryString(), "/response/docs/[2]/id=='"+doc2Id+"'");
+ assertJQ("/query" + query.toQueryString(), "/response/docs/[3]/id=='"+doc3Id+"'");
+
+ implTestOriginalScoreResponseDocsCheck(modelName, query, 0, doc0Id, origScoreFeatureName, doc0Score,
+ nonScoringFeatureName, nonScoringFeatureValue, debugQuery);
+ implTestOriginalScoreResponseDocsCheck(modelName, query, 1, doc1Id, origScoreFeatureName, doc1Score,
+ nonScoringFeatureName, nonScoringFeatureValue, debugQuery);
+ implTestOriginalScoreResponseDocsCheck(modelName, query, 2, doc2Id, origScoreFeatureName, doc2Score,
+ nonScoringFeatureName, nonScoringFeatureValue, debugQuery);
+ implTestOriginalScoreResponseDocsCheck(modelName, query, 3, doc3Id, origScoreFeatureName, doc3Score,
+ nonScoringFeatureName, nonScoringFeatureValue, debugQuery);
+ }
+
+ private static void implTestOriginalScoreResponseDocsCheck(String modelName,
+ SolrQuery query, int docIdx, int docId,
+ String origScoreFeatureName, String origScoreFeatureValue,
+ String nonScoringFeatureName, String nonScoringFeatureValue,
+ boolean debugQuery) throws Exception {
+
+ final String fv;
+ if (nonScoringFeatureName == null) {
+ fv = FeatureLoggerTestUtils.toFeatureVector(origScoreFeatureName, origScoreFeatureValue);
+ } else {
+ fv = FeatureLoggerTestUtils.toFeatureVector(origScoreFeatureName, origScoreFeatureValue, nonScoringFeatureName, nonScoringFeatureValue);
+ }
+
+ assertJQ("/query" + query.toQueryString(), "/response/docs/["+docIdx+"]/fv=='"+fv+"'");
+ // TODO: use debugQuery
}
}
[3/3] lucene-solr:branch_6_5: SOLR-10383: remove duplicate 6.5.1
section heading
Posted by cp...@apache.org.
SOLR-10383: remove duplicate 6.5.1 section heading
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/94ca740f
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/94ca740f
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/94ca740f
Branch: refs/heads/branch_6_5
Commit: 94ca740f3b5c425c6b3f8d20864ab168794744ca
Parents: c9b3b26
Author: Christine Poerschke <cp...@apache.org>
Authored: Mon Apr 3 13:38:17 2017 +0100
Committer: Christine Poerschke <cp...@apache.org>
Committed: Mon Apr 3 13:38:17 2017 +0100
----------------------------------------------------------------------
solr/CHANGES.txt | 6 ------
1 file changed, 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/94ca740f/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 6a97bf1..d9a8e92 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -22,12 +22,6 @@ Bug Fixes
----------------------
* SOLR-10369: bin\solr.cmd delete and healthcheck now works again; fixed continuation chars ^ (Luis Goes via janhoy)
-
-================== 6.5.1 ==================
-
-Bug Fixes
-----------------------
-
* SOLR-10383: Fix debug related NullPointerException in solr/contrib/ltr OriginalScoreFeature class.
(Vitezslav Zak, Christine Poerschke)
[2/3] lucene-solr:branch_6_5: SOLR-10383: Fix debug related
NullPointerException in solr/contrib/ltr OriginalScoreFeature class.
(Vitezslav Zak, Christine Poerschke)
Posted by cp...@apache.org.
SOLR-10383: Fix debug related NullPointerException in solr/contrib/ltr OriginalScoreFeature class.
(Vitezslav Zak, Christine Poerschke)
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/c9b3b265
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/c9b3b265
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/c9b3b265
Branch: refs/heads/branch_6_5
Commit: c9b3b265994480fe76c8d74dbdffa17054b3d91f
Parents: cf7f0c0
Author: Christine Poerschke <cp...@apache.org>
Authored: Mon Apr 3 13:01:16 2017 +0100
Committer: Christine Poerschke <cp...@apache.org>
Committed: Mon Apr 3 13:36:00 2017 +0100
----------------------------------------------------------------------
solr/CHANGES.txt | 8 ++++++++
.../apache/solr/ltr/feature/OriginalScoreFeature.java | 2 +-
.../solr/ltr/feature/TestOriginalScoreFeature.java | 11 +++++++++--
3 files changed, 18 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c9b3b265/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 3e1b676..6a97bf1 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -23,6 +23,14 @@ Bug Fixes
* SOLR-10369: bin\solr.cmd delete and healthcheck now works again; fixed continuation chars ^ (Luis Goes via janhoy)
+================== 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.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c9b3b265/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/OriginalScoreFeature.java
----------------------------------------------------------------------
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 f402f32..c885d8a 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
@@ -114,7 +114,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
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c9b3b265/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestOriginalScoreFeature.java
----------------------------------------------------------------------
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 4eb9bea..f4c0df1 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<String,Object>) ((ArrayList<Object>) ((Map<String,Object>) 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'");
+ }
}
}