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 2016/12/08 18:44:11 UTC

[12/13] lucene-solr:branch_6x: SOLR-8542: master-to-branch_6x backport changes (Michael Nilsson, Naveen Santhapuri, Christine Poerschke)

SOLR-8542: master-to-branch_6x backport changes (Michael Nilsson, Naveen Santhapuri, Christine Poerschke)

* removed 'boost' arg from LTRScoringQuery.createWeight signature
* classes extending Weight now implement normalize and getValueForNormalization
* FieldLengthFeatureScorer tweaks


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/9e8dd854
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/9e8dd854
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/9e8dd854

Branch: refs/heads/branch_6x
Commit: 9e8dd854cda6d56cc8d498cc23d138eeb74732fd
Parents: 3e26572
Author: Christine Poerschke <cp...@apache.org>
Authored: Thu Dec 8 12:54:31 2016 +0000
Committer: Christine Poerschke <cp...@apache.org>
Committed: Thu Dec 8 18:04:07 2016 +0000

----------------------------------------------------------------------
 .../java/org/apache/solr/ltr/LTRScoringQuery.java   | 14 +++++++++++++-
 .../apache/solr/ltr/feature/FieldLengthFeature.java | 14 ++++++++++++--
 .../apache/solr/ltr/feature/FieldValueFeature.java  | 10 ++++++++++
 .../solr/ltr/feature/OriginalScoreFeature.java      | 10 ++++++++++
 .../org/apache/solr/ltr/feature/SolrFeature.java    | 16 ++++++++++++++++
 .../org/apache/solr/ltr/feature/ValueFeature.java   | 10 ++++++++++
 .../LTRFeatureLoggerTransformerFactory.java         |  2 +-
 .../apache/solr/ltr/TestLTRReRankingPipeline.java   |  4 ++--
 8 files changed, 74 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9e8dd854/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java
index d60ebf5..b43f955 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java
@@ -187,7 +187,7 @@ public class LTRScoringQuery extends Query {
   }
 
   @Override
-  public ModelWeight createWeight(IndexSearcher searcher, boolean needsScores, float boost)
+  public ModelWeight createWeight(IndexSearcher searcher, boolean needsScores)
       throws IOException {
     final Collection<Feature> modelFeatures = ltrScoringModel.getFeatures();
     final Collection<Feature> allFeatures = ltrScoringModel.getAllFeatures();
@@ -459,6 +459,18 @@ public class LTRScoringQuery extends Query {
     }
 
     @Override
+    public float getValueForNormalization() throws IOException {
+      return 1f;
+    }
+
+    @Override
+    public void normalize(float norm, float boost) {
+      for (final Feature.FeatureWeight featureWeight : extractedFeatureWeights) {
+        featureWeight.normalize(norm, boost);
+      }
+    }
+
+    @Override
     public ModelScorer scorer(LeafReaderContext context) throws IOException {
 
       final List<Feature.FeatureWeight.FeatureScorer> featureScorers = new ArrayList<Feature.FeatureWeight.FeatureScorer>(

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9e8dd854/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldLengthFeature.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldLengthFeature.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldLengthFeature.java
index 4c17aff..3b6f866 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldLengthFeature.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldLengthFeature.java
@@ -112,6 +112,16 @@ public class FieldLengthFeature extends Feature {
     }
 
     @Override
+    public float getValueForNormalization() throws IOException {
+      return 1f;
+    }
+
+    @Override
+    public void normalize(float norm, float boost) {
+      // no op
+    }
+
+    @Override
     public FeatureScorer scorer(LeafReaderContext context) throws IOException {
       NumericDocValues norms = context.reader().getNormValues(field);
       if (norms == null){
@@ -127,7 +137,7 @@ public class FieldLengthFeature extends Feature {
 
       public FieldLengthFeatureScorer(FeatureWeight weight,
           NumericDocValues norms) throws IOException {
-        super(weight, norms);
+        super(weight, DocIdSetIterator.all(DocIdSetIterator.NO_MORE_DOCS));
         this.norms = norms;
 
         // In the constructor, docId is -1, so using 0 as default lookup
@@ -142,7 +152,7 @@ public class FieldLengthFeature extends Feature {
       @Override
       public float score() throws IOException {
 
-        final long l = norms.longValue();
+        final long l = norms.get(itr.docID());
         final float numTerms = decodeNorm(l);
         return numTerms;
       }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9e8dd854/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldValueFeature.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldValueFeature.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldValueFeature.java
index 5fcf144..4829378 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldValueFeature.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldValueFeature.java
@@ -90,6 +90,16 @@ public class FieldValueFeature extends Feature {
     }
 
     @Override
+    public float getValueForNormalization() throws IOException {
+      return 1f;
+    }
+
+    @Override
+    public void normalize(float norm, float boost) {
+      // no op
+    }
+
+    @Override
     public FeatureScorer scorer(LeafReaderContext context) throws IOException {
       return new FieldValueFeatureScorer(this, context,
           DocIdSetIterator.all(DocIdSetIterator.NO_MORE_DOCS));

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9e8dd854/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 549880b..f402f32 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
@@ -84,6 +84,16 @@ public class OriginalScoreFeature extends Feature {
     }
 
     @Override
+    public float getValueForNormalization() throws IOException {
+      return w.getValueForNormalization();
+    }
+
+    @Override
+    public void normalize(float norm, float boost) {
+      w.normalize(norm, boost);
+    }
+
+    @Override
     public FeatureScorer scorer(LeafReaderContext context) throws IOException {
 
       final Scorer originalScorer = w.scorer(context);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9e8dd854/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/SolrFeature.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/SolrFeature.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/SolrFeature.java
index 13eb96f..7fff934 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/SolrFeature.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/SolrFeature.java
@@ -213,6 +213,22 @@ public class SolrFeature extends Feature {
     }
 
     @Override
+    public float getValueForNormalization() throws IOException {
+      if (solrQueryWeight != null) {
+        return solrQueryWeight.getValueForNormalization();
+      } else {
+        return 0f;
+      }
+    }
+
+    @Override
+    public void normalize(float norm, float boost) {
+      if (solrQueryWeight != null) {
+        solrQueryWeight.normalize(norm, boost);
+      }
+    }
+
+    @Override
     public FeatureScorer scorer(LeafReaderContext context) throws IOException {
       Scorer solrScorer = null;
       if (solrQueryWeight != null) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9e8dd854/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/ValueFeature.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/ValueFeature.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/ValueFeature.java
index 61aa9e5..b020fdc 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/ValueFeature.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/ValueFeature.java
@@ -130,6 +130,16 @@ public class ValueFeature extends Feature {
     }
 
     @Override
+    public float getValueForNormalization() throws IOException {
+      return 1f;
+    }
+
+    @Override
+    public void normalize(float norm, float boost) {
+      // no op
+    }
+
+    @Override
     public FeatureScorer scorer(LeafReaderContext context) throws IOException {
       if(featureValue!=null) {
         return new ValueFeatureScorer(this, featureValue,

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9e8dd854/solr/contrib/ltr/src/java/org/apache/solr/ltr/response/transform/LTRFeatureLoggerTransformerFactory.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/response/transform/LTRFeatureLoggerTransformerFactory.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/response/transform/LTRFeatureLoggerTransformerFactory.java
index 93ebe63..f19db3b 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/response/transform/LTRFeatureLoggerTransformerFactory.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/response/transform/LTRFeatureLoggerTransformerFactory.java
@@ -199,7 +199,7 @@ public class LTRFeatureLoggerTransformerFactory extends TransformerFactory {
       featureLogger = scoringQuery.getFeatureLogger();
 
       try {
-        modelWeight = scoringQuery.createWeight(searcher, true, 1f);
+        modelWeight = scoringQuery.createWeight(searcher, true);
       } catch (final IOException e) {
         throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e.getMessage(), e);
       }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9e8dd854/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRReRankingPipeline.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRReRankingPipeline.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRReRankingPipeline.java
index a98fc4f..6c43afa 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRReRankingPipeline.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRReRankingPipeline.java
@@ -273,7 +273,7 @@ public class TestLTRReRankingPipeline extends LuceneTestCase {
     MockModel ltrScoringModel = new MockModel("test",
         features, norms, "test", allFeatures, null);
     LTRScoringQuery query = new LTRScoringQuery(ltrScoringModel);
-    LTRScoringQuery.ModelWeight wgt = query.createWeight(null, true, 1f);
+    LTRScoringQuery.ModelWeight wgt = query.createWeight(null, true);
     LTRScoringQuery.ModelWeight.ModelScorer modelScr = wgt.scorer(null);
     modelScr.getDocInfo().setOriginalDocScore(new Float(1f));
     for (final Scorer.ChildScorer feat : modelScr.getChildren()) {
@@ -289,7 +289,7 @@ public class TestLTRReRankingPipeline extends LuceneTestCase {
     ltrScoringModel = new MockModel("test", features, norms,
         "test", allFeatures, null);
     query = new LTRScoringQuery(ltrScoringModel);
-    wgt = query.createWeight(null, true, 1f);
+    wgt = query.createWeight(null, true);
     modelScr = wgt.scorer(null);
     modelScr.getDocInfo().setOriginalDocScore(new Float(1f));
     for (final Scorer.ChildScorer feat : modelScr.getChildren()) {