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 2011/10/06 18:01:03 UTC

svn commit: r1179677 - in /lucene/dev/trunk/lucene: CHANGES.txt src/java/org/apache/lucene/search/FilteredQuery.java

Author: rmuir
Date: Thu Oct  6 16:01:03 2011
New Revision: 1179677

URL: http://svn.apache.org/viewvc?rev=1179677&view=rev
Log:
LUCENE-3494: Optimize FilteredQuery to remove a multiply in score()

Modified:
    lucene/dev/trunk/lucene/CHANGES.txt
    lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/FilteredQuery.java

Modified: lucene/dev/trunk/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/CHANGES.txt?rev=1179677&r1=1179676&r2=1179677&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/CHANGES.txt (original)
+++ lucene/dev/trunk/lucene/CHANGES.txt Thu Oct  6 16:01:03 2011
@@ -656,6 +656,9 @@ Optimizations
 * LUCENE-3426: Add NGramPhraseQuery which extends PhraseQuery and tries to 
   reduce the number of terms of the query when rewrite(), in order to improve 
   performance.  (Robert Muir, Koji Sekiguchi)
+  
+* LUCENE-3494: Optimize FilteredQuery to remove a multiply in score()
+  (Uwe Schindler, Robert Muir)
 
 Test Cases
 

Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/FilteredQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/FilteredQuery.java?rev=1179677&r1=1179676&r2=1179677&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/FilteredQuery.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/FilteredQuery.java Thu Oct  6 16:01:03 2011
@@ -67,23 +67,17 @@ extends Query {
       
       @Override
       public float getValueForNormalization() throws IOException { 
-        return weight.getValueForNormalization() * getBoost() * getBoost(); 
+        return weight.getValueForNormalization() * getBoost() * getBoost(); // boost sub-weight
       }
 
       @Override
       public void normalize (float norm, float topLevelBoost) { 
-        weight.normalize(norm, topLevelBoost);
+        weight.normalize(norm, topLevelBoost * getBoost()); // incorporate boost
       }
 
       @Override
       public Explanation explain (AtomicReaderContext ir, int i) throws IOException {
         Explanation inner = weight.explain (ir, i);
-        if (getBoost()!=1) {
-          Explanation preBoost = inner;
-          inner = new Explanation(inner.getValue()*getBoost(),"product of:");
-          inner.addDetail(new Explanation(getBoost(),"boost"));
-          inner.addDetail(preBoost);
-        }
         Filter f = FilteredQuery.this.filter;
         DocIdSet docIdSet = f.getDocIdSet(ir);
         DocIdSetIterator docIdSetIterator = docIdSet == null ? DocIdSet.EMPTY_DOCIDSET.iterator() : docIdSet.iterator();
@@ -158,7 +152,7 @@ extends Query {
           }
 
           @Override
-          public float score() throws IOException { return getBoost() * scorer.score(); }
+          public float score() throws IOException { return scorer.score(); }
         };
       }
     };