You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2012/07/26 01:23:02 UTC

svn commit: r1365837 - in /lucene/dev/trunk/lucene: ./ core/src/java/org/apache/lucene/search/payloads/

Author: rmuir
Date: Wed Jul 25 23:23:02 2012
New Revision: 1365837

URL: http://svn.apache.org/viewvc?rev=1365837&view=rev
Log:
LUCENE-4250: fix trap in PayloadFunction explain API

Modified:
    lucene/dev/trunk/lucene/CHANGES.txt
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/AveragePayloadFunction.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/MaxPayloadFunction.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/MinPayloadFunction.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadFunction.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadNearQuery.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadTermQuery.java

Modified: lucene/dev/trunk/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/CHANGES.txt?rev=1365837&r1=1365836&r2=1365837&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/CHANGES.txt (original)
+++ lucene/dev/trunk/lucene/CHANGES.txt Wed Jul 25 23:23:02 2012
@@ -63,6 +63,10 @@ API Changes
   at all. If you want to tweak things like positionIncrementGap and offsetGap,
   analyze the field with KeywordTokenizer instead.  (Grant Ingersoll, Robert Muir)
 
+* LUCENE-4250: Pass fieldName to the PayloadFunction explain method, so it
+  parallels with docScore and the default implementation is correct.
+  (Robert Muir)
+
 Optimizations
 
 * LUCENE-4171: Performance improvements to Packed64.

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/AveragePayloadFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/AveragePayloadFunction.java?rev=1365837&r1=1365836&r2=1365837&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/AveragePayloadFunction.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/AveragePayloadFunction.java Wed Jul 25 23:23:02 2012
@@ -1,6 +1,5 @@
 package org.apache.lucene.search.payloads;
 
-import org.apache.lucene.search.Explanation;
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -36,14 +35,6 @@ public class AveragePayloadFunction exte
   public float docScore(int docId, String field, int numPayloadsSeen, float payloadScore) {
     return numPayloadsSeen > 0 ? (payloadScore / numPayloadsSeen) : 1;
   }
-  @Override
-  public Explanation explain(int doc, int numPayloadsSeen, float payloadScore) {
-      Explanation payloadBoost = new Explanation();
-      float avgPayloadScore = (numPayloadsSeen > 0 ? (payloadScore / numPayloadsSeen) : 1);
-      payloadBoost.setValue(avgPayloadScore);
-      payloadBoost.setDescription("AveragePayloadFunction(...)");
-      return payloadBoost;
-  } 
 
   @Override
   public int hashCode() {

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/MaxPayloadFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/MaxPayloadFunction.java?rev=1365837&r1=1365836&r2=1365837&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/MaxPayloadFunction.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/MaxPayloadFunction.java Wed Jul 25 23:23:02 2012
@@ -1,6 +1,5 @@
 package org.apache.lucene.search.payloads;
 
-import org.apache.lucene.search.Explanation;
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -41,14 +40,6 @@ public class MaxPayloadFunction extends 
   }
   
   @Override
-  public Explanation explain(int doc, int numPayloadsSeen, float payloadScore) {
-	    Explanation expl = new Explanation();
-	    float maxPayloadScore = (numPayloadsSeen > 0 ? payloadScore : 1);
-	    expl.setValue(maxPayloadScore);
-	    expl.setDescription("MaxPayloadFunction(...)");
-	    return expl;
-	  } 
-  @Override
   public int hashCode() {
     final int prime = 31;
     int result = 1;

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/MinPayloadFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/MinPayloadFunction.java?rev=1365837&r1=1365836&r2=1365837&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/MinPayloadFunction.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/MinPayloadFunction.java Wed Jul 25 23:23:02 2012
@@ -1,6 +1,5 @@
 package org.apache.lucene.search.payloads;
 
-import org.apache.lucene.search.Explanation;
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -39,14 +38,6 @@ public class MinPayloadFunction extends 
   }
   
   @Override
-  public Explanation explain(int doc, int numPayloadsSeen, float payloadScore) {
-	  Explanation expl = new Explanation();
-	  float minPayloadScore = (numPayloadsSeen > 0 ? payloadScore : 1);
-	  expl.setValue(minPayloadScore);
-	  expl.setDescription("MinPayloadFunction(...)");
-	  return expl;
-  }  
-  @Override
   public int hashCode() {
     final int prime = 31;
     int result = 1;

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadFunction.java?rev=1365837&r1=1365836&r2=1365837&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadFunction.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadFunction.java Wed Jul 25 23:23:02 2012
@@ -55,10 +55,10 @@ public abstract class PayloadFunction {
    */
   public abstract float docScore(int docId, String field, int numPayloadsSeen, float payloadScore);
   
-  public Explanation explain(int docId, int numPayloadsSeen, float payloadScore){
+  public Explanation explain(int docId, String field, int numPayloadsSeen, float payloadScore){
 	  Explanation result = new Explanation();
-	  result.setDescription("Unimpl Payload Function Explain");
-	  result.setValue(1);
+	  result.setDescription(getClass().getSimpleName() + ".docScore()");
+	  result.setValue(docScore(docId, field, numPayloadsSeen, payloadScore));
 	  return result;
   };
   

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadNearQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadNearQuery.java?rev=1365837&r1=1365836&r2=1365837&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadNearQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadNearQuery.java Wed Jul 25 23:23:02 2012
@@ -167,8 +167,9 @@ public class PayloadNearQuery extends Sp
           Explanation scoreExplanation = docScorer.explain(doc, new Explanation(freq, "phraseFreq=" + freq));
           expl.addDetail(scoreExplanation);
           expl.setValue(scoreExplanation.getValue());
+          String field = ((SpanQuery)getQuery()).getField();
           // now the payloads part
-          Explanation payloadExpl = function.explain(doc, scorer.payloadsSeen, scorer.payloadScore);
+          Explanation payloadExpl = function.explain(doc, field, scorer.payloadsSeen, scorer.payloadScore);
           // combined
           ComplexExplanation result = new ComplexExplanation();
           result.addDetail(expl);

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadTermQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadTermQuery.java?rev=1365837&r1=1365836&r2=1365837&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadTermQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadTermQuery.java Wed Jul 25 23:23:02 2012
@@ -28,6 +28,7 @@ import org.apache.lucene.search.ComplexE
 import org.apache.lucene.search.similarities.DefaultSimilarity;
 import org.apache.lucene.search.similarities.Similarity;
 import org.apache.lucene.search.similarities.Similarity.SloppySimScorer;
+import org.apache.lucene.search.spans.SpanQuery;
 import org.apache.lucene.search.spans.TermSpans;
 import org.apache.lucene.search.spans.SpanTermQuery;
 import org.apache.lucene.search.spans.SpanWeight;
@@ -190,7 +191,8 @@ public class PayloadTermQuery extends Sp
           // whether to load the payload or not
           // GSI: I suppose we could toString the payload, but I don't think that
           // would be a good idea
-          Explanation payloadExpl = function.explain(doc, scorer.payloadsSeen, scorer.payloadScore);
+          String field = ((SpanQuery)getQuery()).getField();
+          Explanation payloadExpl = function.explain(doc, field, scorer.payloadsSeen, scorer.payloadScore);
           payloadExpl.setValue(scorer.getPayloadScore());
           // combined
           ComplexExplanation result = new ComplexExplanation();