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/10/31 20:38:30 UTC

lucene-solr:jira/solr-8542-v2: SOLR-8542: couple of tweaks

Repository: lucene-solr
Updated Branches:
  refs/heads/jira/solr-8542-v2 e17a3430f -> ce7a067d5


SOLR-8542: couple of tweaks

* remove unnecessary DocInfo. prefix in DocInfo.
* rename FeatureInfo.setScore to setValue
* remove duplicate scorer method call in ModelWeight.score
* reduce visibility of some LTRScoringQuery inner classes
* reduce member visibility/changeability in LTRScoringQuery.java
* remove ModelWeight's unused member and constructor arg


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

Branch: refs/heads/jira/solr-8542-v2
Commit: ce7a067d5b06598941f5dc98bc9f5b7a8e4c7e8d
Parents: e17a343
Author: Christine Poerschke <cp...@apache.org>
Authored: Mon Oct 31 18:18:17 2016 +0000
Committer: Christine Poerschke <cp...@apache.org>
Committed: Mon Oct 31 20:34:57 2016 +0000

----------------------------------------------------------------------
 .../src/java/org/apache/solr/ltr/DocInfo.java   |  6 +-
 .../org/apache/solr/ltr/LTRScoringQuery.java    | 93 +++++++++++---------
 .../apache/solr/ltr/TestLTRScoringQuery.java    | 18 ++--
 .../solr/ltr/TestSelectiveWeightCreation.java   | 16 ++--
 4 files changed, 73 insertions(+), 60 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ce7a067d/solr/contrib/ltr/src/java/org/apache/solr/ltr/DocInfo.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/DocInfo.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/DocInfo.java
index e285d33..b3dfb9e 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/DocInfo.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/DocInfo.java
@@ -28,15 +28,15 @@ public class DocInfo extends HashMap<String,Object> {
   }
 
   public void setOriginalDocScore(Float score) {
-    put(DocInfo.ORIGINAL_DOC_SCORE, score);
+    put(ORIGINAL_DOC_SCORE, score);
   }
 
   public Float getOriginalDocScore() {
-    return (Float)get(DocInfo.ORIGINAL_DOC_SCORE);
+    return (Float)get(ORIGINAL_DOC_SCORE);
   }
 
   public boolean hasOriginalDocScore() {
-    return containsKey(DocInfo.ORIGINAL_DOC_SCORE);
+    return containsKey(ORIGINAL_DOC_SCORE);
   }
 
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ce7a067d/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 778e2be..991c1ed 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
@@ -63,14 +63,14 @@ public class LTRScoringQuery extends Query {
   final private Semaphore querySemaphore; // limits the number of threads per query, so that multiple requests can be serviced simultaneously
 
   // feature logger to output the features.
-  protected FeatureLogger<?> fl;
+  private FeatureLogger<?> fl;
   // Map of external parameters, such as query intent, that can be used by
   // features
-  protected final Map<String,String[]> efi;
+  final private Map<String,String[]> efi;
   // Original solr query used to fetch matching documents
-  protected Query originalQuery;
+  private Query originalQuery;
   // Original solr request
-  protected SolrQueryRequest request;
+  private SolrQueryRequest request;
 
   public LTRScoringQuery(LTRScoringModel ltrScoringModel) {
     this(ltrScoringModel, Collections.<String,String[]>emptyMap(), false, null);
@@ -225,7 +225,7 @@ public class LTRScoringQuery extends Query {
         modelFeaturesWeights[j++] = fw;
       }
     }
-    return new ModelWeight(searcher, modelFeaturesWeights, extractedFeatureWeights, allFeatures.size());
+    return new ModelWeight(modelFeaturesWeights, extractedFeatureWeights, allFeatures.size());
   }
 
   private void createWeights(IndexSearcher searcher, boolean needsScores, float boost,
@@ -243,11 +243,11 @@ public class LTRScoringQuery extends Query {
     }
   }
 
-  class CreateWeightCallable implements Callable<Feature.FeatureWeight>{
+  private class CreateWeightCallable implements Callable<Feature.FeatureWeight>{
     final private Feature f;
-    IndexSearcher searcher;
-    boolean needsScores;
-    SolrQueryRequest req;
+    final private IndexSearcher searcher;
+    final private boolean needsScores;
+    final private SolrQueryRequest req;
 
     public CreateWeightCallable(Feature f, IndexSearcher searcher, boolean needsScores, SolrQueryRequest req){
       this.f = f;
@@ -301,16 +301,16 @@ public class LTRScoringQuery extends Query {
   }
 
   public class FeatureInfo {
-    String name;
-    float value;
-    boolean used;
+    final private String name;
+    private float value;
+    private boolean used;
 
     FeatureInfo(String n, float v, boolean u){
       name = n; value = v; used = u;
     }
 
-    public void setScore(float score){
-      this.value = score;
+    public void setValue(float value){
+      this.value = value;
     }
 
     public String getName(){
@@ -332,13 +332,11 @@ public class LTRScoringQuery extends Query {
 
   public class ModelWeight extends Weight {
 
-    IndexSearcher searcher;
-
     // List of the model's features used for scoring. This is a subset of the
     // features used for logging.
-    Feature.FeatureWeight[] modelFeatureWeights;
-    float[] modelFeatureValuesNormalized;
-    Feature.FeatureWeight[] extractedFeatureWeights;
+    final private Feature.FeatureWeight[] modelFeatureWeights;
+    final private float[] modelFeatureValuesNormalized;
+    final private Feature.FeatureWeight[] extractedFeatureWeights;
 
     // List of all the feature names, values - used for both scoring and logging
     /*
@@ -351,7 +349,7 @@ public class LTRScoringQuery extends Query {
      *     we need a map which holds just the features that were triggered by the documents in the result set.
      *
      */
-    FeatureInfo[] featuresInfo;
+    final private FeatureInfo[] featuresInfo;
     /*
      * @param modelFeatureWeights
      *     - should be the same size as the number of features used by the model
@@ -362,10 +360,9 @@ public class LTRScoringQuery extends Query {
      * @param allFeaturesSize
      *     - total number of feature in the feature store used by this model
      */
-    public ModelWeight(IndexSearcher searcher, Feature.FeatureWeight[] modelFeatureWeights,
+    public ModelWeight(Feature.FeatureWeight[] modelFeatureWeights,
         Feature.FeatureWeight[] extractedFeatureWeights, int allFeaturesSize) {
       super(LTRScoringQuery.this);
-      this.searcher = searcher;
       this.extractedFeatureWeights = extractedFeatureWeights;
       this.modelFeatureWeights = modelFeatureWeights;
       this.modelFeatureValuesNormalized = new float[modelFeatureWeights.length];
@@ -386,6 +383,21 @@ public class LTRScoringQuery extends Query {
       return featuresInfo;
     }
 
+    // for test use
+    Feature.FeatureWeight[] getModelFeatureWeights() {
+      return modelFeatureWeights;
+    }
+
+    // for test use
+    float[] getModelFeatureValuesNormalized() {
+      return modelFeatureValuesNormalized;
+    }
+
+    // for test use
+    Feature.FeatureWeight[] getExtractedFeatureWeights() {
+      return extractedFeatureWeights;
+    }
+
     /**
      * Goes through all the stored feature values, and calculates the normalized
      * values for all the features that will be used for scoring.
@@ -439,7 +451,7 @@ public class LTRScoringQuery extends Query {
       for (int i = 0; i < extractedFeatureWeights.length;++i){
         int featId = extractedFeatureWeights[i].getIndex();
         float value = extractedFeatureWeights[i].getDefaultValue();
-        featuresInfo[featId].setScore(value); // need to set default value everytime as the default value is used in 'dense' mode even if used=false
+        featuresInfo[featId].setValue(value); // need to set default value everytime as the default value is used in 'dense' mode even if used=false
         featuresInfo[featId].setUsed(false);
       }
     }
@@ -452,7 +464,7 @@ public class LTRScoringQuery extends Query {
       for (final Feature.FeatureWeight featureWeight : extractedFeatureWeights) {
         final Feature.FeatureWeight.FeatureScorer scorer = featureWeight.scorer(context);
         if (scorer != null) {
-          featureScorers.add(featureWeight.scorer(context));
+          featureScorers.add(scorer);
         }
       }
       // Always return a ModelScorer, even if no features match, because we
@@ -512,14 +524,14 @@ public class LTRScoringQuery extends Query {
         return featureTraversalScorer.iterator();
       }
 
-      public class SparseModelScorer extends Scorer {
-        protected DisiPriorityQueue subScorers;
-        protected ScoringQuerySparseIterator itr;
+      private class SparseModelScorer extends Scorer {
+        final private DisiPriorityQueue subScorers;
+        final private ScoringQuerySparseIterator itr;
 
-        protected int targetDoc = -1;
-        protected int activeDoc = -1;
+        private int targetDoc = -1;
+        private int activeDoc = -1;
 
-        protected SparseModelScorer(Weight weight,
+        private SparseModelScorer(Weight weight,
             List<Feature.FeatureWeight.FeatureScorer> featureScorers) {
           super(weight);
           if (featureScorers.size() <= 1) {
@@ -554,7 +566,7 @@ public class LTRScoringQuery extends Query {
               final Scorer subScorer = w.scorer;
               Feature.FeatureWeight scFW = (Feature.FeatureWeight) subScorer.getWeight();
               final int featureId = scFW.getIndex();
-              featuresInfo[featureId].setScore(subScorer.score());
+              featuresInfo[featureId].setValue(subScorer.score());
               featuresInfo[featureId].setUsed(true);
             }
           }
@@ -586,8 +598,7 @@ public class LTRScoringQuery extends Query {
           return children;
         }
 
-        protected class ScoringQuerySparseIterator extends
-        DisjunctionDISIApproximation {
+        private class ScoringQuerySparseIterator extends DisjunctionDISIApproximation {
 
           public ScoringQuerySparseIterator(DisiPriorityQueue subIterators) {
             super(subIterators);
@@ -620,13 +631,13 @@ public class LTRScoringQuery extends Query {
 
       }
 
-      public class DenseModelScorer extends Scorer {
-        int activeDoc = -1; // The doc that our scorer's are actually at
-        int targetDoc = -1; // The doc we were most recently told to go to
-        int freq = -1;
-        List<Feature.FeatureWeight.FeatureScorer> featureScorers;
+      private class DenseModelScorer extends Scorer {
+        private int activeDoc = -1; // The doc that our scorer's are actually at
+        private int targetDoc = -1; // The doc we were most recently told to go to
+        private int freq = -1;
+        final private List<Feature.FeatureWeight.FeatureScorer> featureScorers;
 
-        protected DenseModelScorer(Weight weight,
+        private DenseModelScorer(Weight weight,
             List<Feature.FeatureWeight.FeatureScorer> featureScorers) {
           super(weight);
           this.featureScorers = featureScorers;
@@ -647,7 +658,7 @@ public class LTRScoringQuery extends Query {
                 freq++;
                 Feature.FeatureWeight scFW = (Feature.FeatureWeight) scorer.getWeight();
                 final int featureId = scFW.getIndex();
-                featuresInfo[featureId].setScore(scorer.score());
+                featuresInfo[featureId].setValue(scorer.score());
                 featuresInfo[featureId].setUsed(true);
               }
             }
@@ -675,7 +686,7 @@ public class LTRScoringQuery extends Query {
           return new DenseIterator();
         }
 
-        class DenseIterator extends DocIdSetIterator {
+        private class DenseIterator extends DocIdSetIterator {
 
           @Override
           public int docID() {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ce7a067d/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRScoringQuery.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRScoringQuery.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRScoringQuery.java
index 19c48bd..bf241b7 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRScoringQuery.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRScoringQuery.java
@@ -225,14 +225,14 @@ public class TestLTRScoringQuery extends LuceneTestCase {
 
     LTRScoringQuery.ModelWeight modelWeight = performQuery(hits, searcher,
         hits.scoreDocs[0].doc, new LTRScoringQuery(ltrScoringModel));
-    assertEquals(3, modelWeight.modelFeatureValuesNormalized.length);
+    assertEquals(3, modelWeight.getModelFeatureValuesNormalized().length);
 
     for (int i = 0; i < 3; i++) {
-      assertEquals(i, modelWeight.modelFeatureValuesNormalized[i], 0.0001);
+      assertEquals(i, modelWeight.getModelFeatureValuesNormalized()[i], 0.0001);
     }
     int[] posVals = new int[] {0, 1, 2};
     int pos = 0;
-    for (LTRScoringQuery.FeatureInfo fInfo:modelWeight.featuresInfo) {
+    for (LTRScoringQuery.FeatureInfo fInfo:modelWeight.getFeaturesInfo()) {
         if (fInfo == null){
           continue;
         }
@@ -252,11 +252,11 @@ public class TestLTRScoringQuery extends LuceneTestCase {
     modelWeight = performQuery(hits, searcher, hits.scoreDocs[0].doc,
         new LTRScoringQuery(ltrScoringModel));
     assertEquals(mixPositions.length,
-        modelWeight.modelFeatureWeights.length);
+        modelWeight.getModelFeatureWeights().length);
 
     for (int i = 0; i < mixPositions.length; i++) {
       assertEquals(mixPositions[i],
-          modelWeight.modelFeatureValuesNormalized[i], 0.0001);
+          modelWeight.getModelFeatureValuesNormalized()[i], 0.0001);
     }
 
     final ModelException expectedModelException = new ModelException("no features declared for model test");
@@ -271,7 +271,7 @@ public class TestLTRScoringQuery extends LuceneTestCase {
       fail("unexpectedly got here instead of catching "+expectedModelException);
       modelWeight = performQuery(hits, searcher, hits.scoreDocs[0].doc,
           new LTRScoringQuery(ltrScoringModel));
-      assertEquals(0, modelWeight.modelFeatureWeights.length);
+      assertEquals(0, modelWeight.getModelFeatureWeights().length);
     } catch (ModelException actualModelException) {
       assertEquals(expectedModelException.toString(), actualModelException.toString());
     }
@@ -299,11 +299,11 @@ public class TestLTRScoringQuery extends LuceneTestCase {
 
     modelWeight = performQuery(hits, searcher, hits.scoreDocs[0].doc,
         new LTRScoringQuery(normMeta));
-    normMeta.normalizeFeaturesInPlace(modelWeight.modelFeatureValuesNormalized);
+    normMeta.normalizeFeaturesInPlace(modelWeight.getModelFeatureValuesNormalized());
     assertEquals(mixPositions.length,
-        modelWeight.modelFeatureWeights.length);
+        modelWeight.getModelFeatureWeights().length);
     for (int i = 0; i < mixPositions.length; i++) {
-      assertEquals(42.42f, modelWeight.modelFeatureValuesNormalized[i], 0.0001);
+      assertEquals(42.42f, modelWeight.getModelFeatureValuesNormalized()[i], 0.0001);
     }
     r.close();
     dir.close();

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ce7a067d/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestSelectiveWeightCreation.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestSelectiveWeightCreation.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestSelectiveWeightCreation.java
index db9fbe1..68961d2 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestSelectiveWeightCreation.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestSelectiveWeightCreation.java
@@ -176,11 +176,12 @@ public class TestSelectiveWeightCreation extends TestRerankBase {
         makeFeatureWeights(features));
     LTRScoringQuery.ModelWeight modelWeight = performQuery(hits, searcher,
         hits.scoreDocs[0].doc, new LTRScoringQuery(ltrScoringModel1, false)); // features not requested in response
+    LTRScoringQuery.FeatureInfo[] featuresInfo = modelWeight.getFeaturesInfo();
 
-    assertEquals(features.size(), modelWeight.modelFeatureValuesNormalized.length);
+    assertEquals(features.size(), modelWeight.getModelFeatureValuesNormalized().length);
     int validFeatures = 0;
-    for (int i=0; i < modelWeight.featuresInfo.length; ++i){
-      if (modelWeight.featuresInfo[i] != null && modelWeight.featuresInfo[i].isUsed()){
+    for (int i=0; i < featuresInfo.length; ++i){
+      if (featuresInfo[i] != null && featuresInfo[i].isUsed()){
         validFeatures += 1;
       }
     }
@@ -192,13 +193,14 @@ public class TestSelectiveWeightCreation extends TestRerankBase {
         makeFeatureWeights(features));
     modelWeight = performQuery(hits, searcher,
         hits.scoreDocs[0].doc, new LTRScoringQuery(ltrScoringModel2, true)); // features requested in response
+    featuresInfo = modelWeight.getFeaturesInfo();
 
-    assertEquals(features.size(), modelWeight.modelFeatureValuesNormalized.length);
-    assertEquals(allFeatures.size(), modelWeight.extractedFeatureWeights.length);
+    assertEquals(features.size(), modelWeight.getModelFeatureValuesNormalized().length);
+    assertEquals(allFeatures.size(), modelWeight.getExtractedFeatureWeights().length);
 
     validFeatures = 0;
-    for (int i=0; i < modelWeight.featuresInfo.length; ++i){
-      if (modelWeight.featuresInfo[i] != null && modelWeight.featuresInfo[i].isUsed()){
+    for (int i=0; i < featuresInfo.length; ++i){
+      if (featuresInfo[i] != null && featuresInfo[i].isUsed()){
         validFeatures += 1;
       }
     }