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'");
+    }
   }
 
 }