Index: lucene/src/java/org/apache/lucene/search/FilteredQuery.java
===================================================================
--- lucene/src/java/org/apache/lucene/search/FilteredQuery.java	(revision 1179648)
+++ lucene/src/java/org/apache/lucene/search/FilteredQuery.java	(working copy)
@@ -67,23 +67,17 @@
       
       @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 @@
           }
 
           @Override
-          public float score() throws IOException { return getBoost() * scorer.score(); }
+          public float score() throws IOException { return scorer.score(); }
         };
       }
     };
