You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jp...@apache.org on 2015/09/08 14:16:09 UTC

svn commit: r1701783 [6/6] - in /lucene/dev/branches/branch_5x: ./ lucene/ lucene/core/ lucene/core/src/java/org/apache/lucene/search/ lucene/core/src/java/org/apache/lucene/search/payloads/ lucene/core/src/java/org/apache/lucene/search/similarities/ l...

Modified: lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/AssertingIndexSearcher.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/AssertingIndexSearcher.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/AssertingIndexSearcher.java (original)
+++ lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/AssertingIndexSearcher.java Tue Sep  8 12:16:06 2015
@@ -59,7 +59,7 @@ public class AssertingIndexSearcher exte
     return new AssertingWeight(random, w, needsScores) {
 
       @Override
-      public void normalize(float norm, float topLevelBoost) {
+      public void normalize(float norm, float boost) {
         throw new IllegalStateException("Weight already normalized.");
       }
 

Modified: lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/AssertingQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/AssertingQuery.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/AssertingQuery.java (original)
+++ lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/AssertingQuery.java Tue Sep  8 12:16:06 2015
@@ -23,7 +23,7 @@ import java.util.Random;
 import org.apache.lucene.index.IndexReader;
 
 /** Assertion-enabled query. */
-public class AssertingQuery extends Query {
+public final class AssertingQuery extends Query {
 
   private final Random random;
   private final Query in;
@@ -64,28 +64,16 @@ public class AssertingQuery extends Quer
   }
 
   @Override
-  public Query clone() {
-    return wrap(new Random(random.nextLong()), in.clone());
-  }
-
-  @Override
   public Query rewrite(IndexReader reader) throws IOException {
+    if (getBoost() != 1f) {
+      return super.rewrite(reader);
+    }
     final Query rewritten = in.rewrite(reader);
     if (rewritten == in) {
-      return this;
+      return super.rewrite(reader);
     } else {
       return wrap(new Random(random.nextLong()), rewritten);
     }
   }
 
-  @Override
-  public float getBoost() {
-    return in.getBoost();
-  }
-
-  @Override
-  public void setBoost(float b) {
-    in.setBoost(b);
-  }
-
 }

Modified: lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/AssertingWeight.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/AssertingWeight.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/AssertingWeight.java (original)
+++ lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/AssertingWeight.java Tue Sep  8 12:16:06 2015
@@ -53,8 +53,8 @@ class AssertingWeight extends Weight {
   }
 
   @Override
-  public void normalize(float norm, float topLevelBoost) {
-    in.normalize(norm, topLevelBoost);
+  public void normalize(float norm, float boost) {
+    in.normalize(norm, boost);
   }
 
   @Override

Modified: lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java (original)
+++ lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java Tue Sep  8 12:16:06 2015
@@ -39,6 +39,7 @@ import org.apache.lucene.index.SortedNum
 import org.apache.lucene.index.SortedSetDocValues;
 import org.apache.lucene.index.StoredFieldVisitor;
 import org.apache.lucene.index.Terms;
+import org.apache.lucene.search.spans.SpanBoostQuery;
 import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.LuceneTestCase;
 
@@ -63,10 +64,23 @@ public class QueryUtils {
       check(filtered.getQuery());
       check(filtered.getFilter());
     }
+
+    try {
+      IndexSearcher dummySearcher = new IndexSearcher(new MultiReader());
+      Query clone = q.clone();
+      clone.setBoost((float) Math.PI);
+      Query rewritten = dummySearcher.rewrite(clone);
+      Assert.assertTrue("Query " + clone.getClass() + " does not propagate Query.rewrite call to super.rewrite",
+          rewritten instanceof BoostQuery || rewritten instanceof SpanBoostQuery);
+    } catch (IOException ioe) {
+      throw new AssertionError("Unexpected I/O error", ioe);
+    }
   }
 
   /** check very basic hashCode and equals */
   public static void checkHashEquals(Query q) {
+    checkEqual(q,q);
+
     Query q2 = q.clone();
     checkEqual(q,q2);
 
@@ -82,7 +96,6 @@ public class QueryUtils {
         return "My Whacky Query";
       }
     };
-    whacky.setBoost(q.getBoost());
     checkUnequal(q, whacky);
     
     // null test
@@ -134,10 +147,6 @@ public class QueryUtils {
           check(random, q1, wrapUnderlyingReader(random, s, +1), false);
         }
         checkExplanations(q1,s);
-        
-        Query q2 = q1.clone();
-        checkEqual(s.rewrite(q1),
-                   s.rewrite(q2));
       }
     } catch (IOException e) {
       throw new RuntimeException(e);

Modified: lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/RandomApproximationQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/RandomApproximationQuery.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/RandomApproximationQuery.java (original)
+++ lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/RandomApproximationQuery.java Tue Sep  8 12:16:06 2015
@@ -43,22 +43,22 @@ public class RandomApproximationQuery ex
 
   @Override
   public Query rewrite(IndexReader reader) throws IOException {
+    if (getBoost() != 1f) {
+      return super.rewrite(reader);
+    }
     final Query rewritten = query.rewrite(reader);
     if (rewritten != query) {
       return new RandomApproximationQuery(rewritten, random);
     }
-    return this;
+    return super.rewrite(reader);
   }
 
   @Override
   public boolean equals(Object obj) {
-    if (obj instanceof RandomApproximationQuery == false) {
+    if (super.equals(obj) == false) {
       return false;
     }
     final RandomApproximationQuery that = (RandomApproximationQuery) obj;
-    if (this.getBoost() != that.getBoost()) {
-      return false;
-    }
     if (this.query.equals(that.query) == false) {
       return false;
     }
@@ -67,7 +67,7 @@ public class RandomApproximationQuery ex
 
   @Override
   public int hashCode() {
-    return 31 * query.hashCode() + Float.floatToIntBits(getBoost());
+    return 31 * super.hashCode() + query.hashCode();
   }
 
   @Override
@@ -108,8 +108,8 @@ public class RandomApproximationQuery ex
     }
 
     @Override
-    public void normalize(float norm, float topLevelBoost) {
-      weight.normalize(norm, topLevelBoost);
+    public void normalize(float norm, float boost) {
+      weight.normalize(norm, boost);
     }
 
     @Override

Modified: lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/spans/AssertingSpanQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/spans/AssertingSpanQuery.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/spans/AssertingSpanQuery.java (original)
+++ lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/spans/AssertingSpanQuery.java Tue Sep  8 12:16:06 2015
@@ -48,20 +48,13 @@ public class AssertingSpanQuery extends
   }
 
   @Override
-  public void setBoost(float b) {
-    in.setBoost(b);
-  }
-
-  @Override
-  public float getBoost() {
-    return in.getBoost();
-  }
-
-  @Override
   public Query rewrite(IndexReader reader) throws IOException {
+    if (getBoost() != 1f) {
+      return super.rewrite(reader);
+    }
     Query q = in.rewrite(reader);
     if (q == in) {
-      return this;
+      return super.rewrite(reader);
     } else if (q instanceof SpanQuery) {
       return new AssertingSpanQuery((SpanQuery) q);
     } else {
@@ -71,7 +64,7 @@ public class AssertingSpanQuery extends
 
   @Override
   public Query clone() {
-    return new AssertingSpanQuery((SpanQuery) in.clone());
+    return new AssertingSpanQuery((SpanQuery) in);
   }
 
   @Override

Modified: lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/spans/AssertingSpanWeight.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/spans/AssertingSpanWeight.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/spans/AssertingSpanWeight.java (original)
+++ lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/spans/AssertingSpanWeight.java Tue Sep  8 12:16:06 2015
@@ -69,8 +69,8 @@ public class AssertingSpanWeight extends
   }
 
   @Override
-  public void normalize(float queryNorm, float topLevelBoost) {
-    in.normalize(queryNorm, topLevelBoost);
+  public void normalize(float queryNorm, float boost) {
+    in.normalize(queryNorm, boost);
   }
 
   @Override

Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java Tue Sep  8 12:16:06 2015
@@ -24,6 +24,7 @@ import org.apache.lucene.index.Term;
 import org.apache.lucene.queries.mlt.MoreLikeThis;
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanQuery;
+import org.apache.lucene.search.BoostQuery;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.TermQuery;
 import org.apache.solr.common.SolrException;
@@ -372,17 +373,16 @@ public class MoreLikeThisHandler extends
     }
     
     private Query getBoostedQuery(Query mltquery) {
-      BooleanQuery boostedQuery = (BooleanQuery)mltquery.clone();
+      BooleanQuery boostedQuery = (BooleanQuery)mltquery;
       if (boostFields.size() > 0) {
         BooleanQuery.Builder newQ = new BooleanQuery.Builder();
         newQ.setDisableCoord(boostedQuery.isCoordDisabled());
         newQ.setMinimumNumberShouldMatch(boostedQuery.getMinimumNumberShouldMatch());
         for (BooleanClause clause : boostedQuery) {
-          TermQuery q = (TermQuery) clause.getQuery();
-          Float b = this.boostFields.get(q.getTerm().field());
+          Query q = clause.getQuery();
+          Float b = this.boostFields.get(((TermQuery) q).getTerm().field());
           if (b != null) {
-            q = (TermQuery) q.clone();
-            q.setBoost(b*q.getBoost());
+            q = new BoostQuery(q, b);
           }
           newQ.add(q, clause.getOccur());
         }
@@ -482,10 +482,16 @@ public class MoreLikeThisHandler extends
     { 
       Collection<BooleanClause> clauses = ((BooleanQuery)query).clauses();
       for( BooleanClause o : clauses ) {
-        TermQuery q = (TermQuery) o.getQuery();
+        Query q = o.getQuery();
+        float boost = 1f;
+        if (query instanceof BoostQuery) {
+          BoostQuery bq = (BoostQuery) q;
+          q = bq.getQuery();
+          boost = bq.getBoost();
+        }
         InterestingTerm it = new InterestingTerm();
-        it.boost = q.getBoost();
-        it.term = q.getTerm();
+        it.boost = boost;
+        it.term = ((TermQuery) q).getTerm();
         terms.add( it );
       } 
       // alternatively we could use

Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java Tue Sep  8 12:16:06 2015
@@ -30,6 +30,7 @@ import org.apache.lucene.index.Terms;
 import org.apache.lucene.index.TermsEnum;
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanQuery;
+import org.apache.lucene.search.BoostQuery;
 import org.apache.lucene.search.DocIdSetIterator;
 import org.apache.lucene.search.FieldComparator;
 import org.apache.lucene.search.FieldComparatorSource;
@@ -153,7 +154,6 @@ public class QueryElevationComponent ext
         this.priority.put(new BytesRef(id), max--);
       }
       this.include = include.build();
-      this.include.setBoost(0);
 
       if (exclude == null || exclude.isEmpty()) {
         this.exclude = null;
@@ -420,12 +420,12 @@ public class QueryElevationComponent ext
       // Change the query to insert forced documents
       if (exclusive == true) {
         //we only want these results
-        rb.setQuery(booster.include);
+        rb.setQuery(new BoostQuery(booster.include, 0f));
       } else {
         BooleanQuery.Builder newq = new BooleanQuery.Builder();
         newq.setDisableCoord(true);
         newq.add(query, BooleanClause.Occur.SHOULD);
-        newq.add(booster.include, BooleanClause.Occur.SHOULD);
+        newq.add(new BoostQuery(booster.include, 0f), BooleanClause.Occur.SHOULD);
         if (booster.exclude != null) {
           if (markExcludes == false) {
             for (TermQuery tq : booster.exclude) {

Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/parser/SolrQueryParserBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/parser/SolrQueryParserBase.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/parser/SolrQueryParserBase.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/parser/SolrQueryParserBase.java Tue Sep  8 12:16:06 2015
@@ -29,6 +29,7 @@ import org.apache.lucene.index.Term;
 import org.apache.lucene.search.AutomatonQuery;
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanQuery;
+import org.apache.lucene.search.BoostQuery;
 import org.apache.lucene.search.ConstantScoreQuery;
 import org.apache.lucene.search.FuzzyQuery;
 import org.apache.lucene.search.MatchAllDocsQuery;
@@ -398,7 +399,6 @@ public abstract class SolrQueryParserBas
         }
         builder.setSlop(slop);
         query = builder.build();
-        query.setBoost(pq.getBoost());
       }
       if (query instanceof MultiPhraseQuery) {
         ((MultiPhraseQuery) query).setSlop(slop);
@@ -572,19 +572,17 @@ public abstract class SolrQueryParserBas
       // syntax looks like foo:x^=3
       float val = Float.parseFloat(boost.image.substring(1));
       Query newQ = q;
-      if (q instanceof FilterQuery || q instanceof ConstantScoreQuery || q instanceof SolrConstantScoreQuery) {
-        newQ.setBoost(val);
+      if (q instanceof ConstantScoreQuery || q instanceof SolrConstantScoreQuery) {
+        // skip
       } else {
         newQ = new ConstantScoreQuery(q);
-        newQ.setBoost(val);
       }
-      return newQ;
+      return new BoostQuery(newQ, val);
     }
 
     float boostVal = Float.parseFloat(boost.image);
-    q.setBoost(q.getBoost() * boostVal);
 
-    return q;
+    return new BoostQuery(q, boostVal);
   }
 
 
@@ -821,7 +819,6 @@ public abstract class SolrQueryParserBas
             buffer.append(":");
           }
           buffer.append(term.text());
-          buffer.append(ToStringUtils.boost(getBoost()));
           return buffer.toString();
         }
       };

Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/query/FilterQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/query/FilterQuery.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/query/FilterQuery.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/query/FilterQuery.java Tue Sep  8 12:16:06 2015
@@ -20,11 +20,11 @@ package org.apache.solr.query;
 import java.io.IOException;
 
 import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.search.BoostQuery;
 import org.apache.lucene.search.ConstantScoreQuery;
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.Weight;
-import org.apache.lucene.util.ToStringUtils;
 import org.apache.solr.search.DocSet;
 import org.apache.solr.search.ExtendedQueryBase;
 import org.apache.solr.search.SolrConstantScoreQuery;
@@ -35,7 +35,6 @@ public class FilterQuery extends Extende
 
   public FilterQuery(Query q) {
     this.q = q;
-    setBoost(0);  // default boost is 0;
   }
 
   public Query getQuery() {
@@ -51,27 +50,27 @@ public class FilterQuery extends Extende
   public boolean equals(Object obj) {
     if (!(obj instanceof FilterQuery)) return false;
     FilterQuery fq = (FilterQuery)obj;
-    return this.q.equals(fq.q) && this.getBoost() == fq.getBoost();
+    return this.q.equals(fq.q);
   }
 
   @Override
   public String toString(String field) {
     StringBuilder sb = new StringBuilder();
-    sb.append("field(");
+    sb.append("filter(");
     sb.append(q.toString(""));
     sb.append(')');
-    sb.append(ToStringUtils.boost(getBoost()));
     return sb.toString();
   }
 
 
   @Override
   public Query rewrite(IndexReader reader) throws IOException {
+    if (getBoost() != 1f) {
+      return super.rewrite(reader);
+    }
     Query newQ = q.rewrite(reader);
     if (newQ != q) {
-      FilterQuery fq = new FilterQuery(newQ);
-      fq.setBoost(this.getBoost());
-      return fq;
+      return new FilterQuery(newQ);
     } else {
       return this;
     }
@@ -83,17 +82,13 @@ public class FilterQuery extends Extende
 
     if (!(searcher instanceof SolrIndexSearcher)) {
       // delete-by-query won't have SolrIndexSearcher
-      ConstantScoreQuery csq = new ConstantScoreQuery(q);
-      csq.setBoost(this.getBoost());
-      return csq.createWeight(searcher, needScores);
+      return new BoostQuery(new ConstantScoreQuery(q), 0).createWeight(searcher, needScores);
     }
 
     SolrIndexSearcher solrSearcher = (SolrIndexSearcher)searcher;
     DocSet docs = solrSearcher.getDocSet(q);
     // reqInfo.addCloseHook(docs);  // needed for off-heap refcounting
 
-    SolrConstantScoreQuery csq = new SolrConstantScoreQuery( docs.getTopFilter() );
-    csq.setBoost( this.getBoost() );
-    return csq.createWeight(searcher, needScores);
+    return new BoostQuery(new SolrConstantScoreQuery(docs.getTopFilter()), 0).createWeight(searcher, needScores);
   }
 }

Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/schema/LatLonType.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/schema/LatLonType.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/schema/LatLonType.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/schema/LatLonType.java Tue Sep  8 12:16:06 2015
@@ -20,7 +20,6 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 import org.apache.lucene.document.FieldType;
 import org.apache.lucene.index.IndexReader;
@@ -31,6 +30,7 @@ import org.apache.lucene.queries.functio
 import org.apache.lucene.queries.function.valuesource.VectorValueSource;
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanQuery;
+import org.apache.lucene.search.ConstantScoreWeight;
 import org.apache.lucene.search.Explanation;
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.Query;
@@ -38,7 +38,6 @@ import org.apache.lucene.search.Scorer;
 import org.apache.lucene.search.SortField;
 import org.apache.lucene.search.Weight;
 import org.apache.lucene.uninverting.UninvertingReader.Type;
-import org.apache.lucene.util.Bits;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.response.TextResponseWriter;
 import org.apache.solr.search.DelegatingCollector;
@@ -305,13 +304,14 @@ class SpatialDistanceQuery extends Exten
 
   @Override
   public Query rewrite(IndexReader reader) throws IOException {
+    if (getBoost() != 1f) {
+      return super.rewrite(reader);
+    }
     return bboxQuery != null ? bboxQuery.rewrite(reader) : this;
   }
 
-  protected class SpatialWeight extends Weight {
+  protected class SpatialWeight extends ConstantScoreWeight {
     protected IndexSearcher searcher;
-    protected float queryNorm;
-    protected float queryWeight;
     protected Map latContext;
     protected Map lonContext;
 
@@ -325,28 +325,13 @@ class SpatialDistanceQuery extends Exten
     }
 
     @Override
-    public void extractTerms(Set terms) {}
-
-    @Override
-    public float getValueForNormalization() throws IOException {
-      queryWeight = getBoost();
-      return queryWeight * queryWeight;
-    }
-
-    @Override
-    public void normalize(float norm, float topLevelBoost) {
-      this.queryNorm = norm * topLevelBoost;
-      queryWeight *= this.queryNorm;
-    }
-
-    @Override
     public Scorer scorer(LeafReaderContext context) throws IOException {
-      return new SpatialScorer(context, this, queryWeight);
+      return new SpatialScorer(context, this, score());
     }
 
     @Override
     public Explanation explain(LeafReaderContext context, int doc) throws IOException {
-      return ((SpatialScorer)scorer(context)).explain(doc);
+      return ((SpatialScorer)scorer(context)).explain(super.explain(context, doc), doc);
     }
   }
 
@@ -484,24 +469,15 @@ class SpatialDistanceQuery extends Exten
       return maxDoc;
     }
 
-    public Explanation explain(int doc) throws IOException {
-      advance(doc);
-      boolean matched = this.doc == doc;
-      this.doc = doc;
-
-      float sc = matched ? score() : 0;
+    public Explanation explain(Explanation base, int doc) throws IOException {
+      if (base.isMatch() == false) {
+        return base;
+      }
       double dist = dist(latVals.doubleVal(doc), lonVals.doubleVal(doc));
 
       String description = SpatialDistanceQuery.this.toString();
-
-      if (matched) {
-        return Explanation.match(sc, description + " product of:",
-            Explanation.match((float) dist, "hsin("+latVals.doubleVal(doc)+","+lonVals.doubleVal(doc)),
-            Explanation.match(getBoost(), "boost"),
-            Explanation.match(weight.queryNorm,"queryNorm"));
-      } else {
-        return Explanation.noMatch("No match");
-      }
+      return Explanation.match((float) (base.getValue() * dist), description + " product of:",
+          base, Explanation.match((float) dist, "hsin("+latVals.doubleVal(doc)+","+lonVals.doubleVal(doc)));
     }
 
   }
@@ -552,8 +528,7 @@ class SpatialDistanceQuery extends Exten
   @Override
   public String toString(String field)
   {
-    float boost = getBoost();
-    return super.getOptions() + (boost!=1.0?"(":"") +
+    return super.getOptions() +
             (calcDist ? "geofilt" : "bbox") + "(latlonSource="+origField +"(" + latSource + "," + lonSource + ")"
             +",latCenter="+latCenter+",lonCenter="+lonCenter
             +",dist=" + dist
@@ -563,8 +538,7 @@ class SpatialDistanceQuery extends Exten
             +",calcDist="+calcDist
             +",planetRadius="+planetRadius
             // + (bboxQuery == null ? "" : ",bboxQuery="+bboxQuery)
-            +")"
-            + (boost==1.0 ? "" : ")^"+boost);
+            +")";
   }
 
 
@@ -586,7 +560,6 @@ class SpatialDistanceQuery extends Exten
             && this.calcDist == other.calcDist
             && this.lonSource.equals(other.lonSource)
             && this.latSource.equals(other.latSource)
-            && this.getBoost() == other.getBoost()
         ;
   }
 

Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java Tue Sep  8 12:16:06 2015
@@ -171,25 +171,25 @@ public class CollapsingQParserPlugin ext
     }
 
     public int hashCode() {
-      int hashCode = collapseField.hashCode();
+      int hashCode = super.hashCode();
+      hashCode = 31 * hashCode + collapseField.hashCode();
       hashCode = max!=null ? hashCode+max.hashCode():hashCode;
       hashCode = min!=null ? hashCode+min.hashCode():hashCode;
       hashCode = hashCode+nullPolicy;
-      hashCode = hashCode*((1+Float.floatToIntBits(this.getBoost()))*31);
       return hashCode;
     }
 
     public boolean equals(Object o) {
+      if (super.equals(o) == false) {
+        return false;
+      }
 
-      if(o instanceof CollapsingPostFilter) {
-        CollapsingPostFilter c = (CollapsingPostFilter)o;
-        if(this.collapseField.equals(c.collapseField) &&
-           ((this.max == null && c.max == null) || (this.max != null && c.max != null && this.max.equals(c.max))) &&
-           ((this.min == null && c.min == null) || (this.min != null && c.min != null && this.min.equals(c.min))) &&
-           this.nullPolicy == c.nullPolicy &&
-           this.getBoost()==c.getBoost()) {
-          return true;
-        }
+      CollapsingPostFilter c = (CollapsingPostFilter)o;
+      if(this.collapseField.equals(c.collapseField) &&
+         ((this.max == null && c.max == null) || (this.max != null && c.max != null && this.max.equals(c.max))) &&
+         ((this.min == null && c.min == null) || (this.min != null && c.min != null && this.min.equals(c.min))) &&
+         this.nullPolicy == c.nullPolicy) {
+        return true;
       }
       return false;
     }

Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/DisMaxQParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/DisMaxQParser.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/DisMaxQParser.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/DisMaxQParser.java Tue Sep  8 12:16:06 2015
@@ -18,6 +18,7 @@ package org.apache.solr.search;
 
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanQuery;
+import org.apache.lucene.search.BoostQuery;
 import org.apache.lucene.search.Query;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.parser.QueryParser;
@@ -127,7 +128,7 @@ public class DisMaxQParser extends QPars
           Query fq = subQuery(f, FunctionQParserPlugin.NAME).getQuery();
           Float b = ff.get(f);
           if (null != b) {
-            fq.setBoost(b);
+            fq = new BoostQuery(fq, b);
           }
           query.add(fq, BooleanClause.Occur.SHOULD);
         }
@@ -151,7 +152,15 @@ public class DisMaxQParser extends QPars
       if (1 == boostQueries.size() && 1 == boostParams.length) {
         /* legacy logic */
         Query f = boostQueries.get(0);
-        if (1.0f == f.getBoost() && f instanceof BooleanQuery) {
+        while (f instanceof BoostQuery) {
+          BoostQuery bq = (BoostQuery) f;
+          if (bq .getBoost() == 1f) {
+            f = bq.getQuery();
+          } else {
+            break;
+          }
+        }
+        if (f instanceof BooleanQuery) {
           /* if the default boost was used, and we've got a BooleanQuery
            * extract the subqueries out and use them directly
            */

Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/ExportQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/ExportQParserPlugin.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/ExportQParserPlugin.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/ExportQParserPlugin.java Tue Sep  8 12:16:06 2015
@@ -28,7 +28,6 @@ import org.apache.solr.common.params.Sol
 
 import java.io.IOException;
 import java.util.Map;
-import java.util.Set;
 
 public class ExportQParserPlugin extends QParserPlugin {
 
@@ -62,14 +61,6 @@ public class ExportQParserPlugin extends
     private Query mainQuery;
     private Object id;
 
-    public Query clone() {
-      ExportQuery clone = new ExportQuery();
-      clone.id = id;
-      clone.leafCount = leafCount;
-      clone.mainQuery = mainQuery;
-      return clone;
-    }
-
     public RankQuery wrap(Query mainQuery) {
       this.mainQuery = mainQuery;
       return this;
@@ -84,6 +75,9 @@ public class ExportQParserPlugin extends
     }
 
     public Query rewrite(IndexReader reader) throws IOException {
+      if (getBoost() != 1f) {
+        return super.rewrite(reader);
+      }
       return this.mainQuery.rewrite(reader);
     }
 
@@ -95,16 +89,15 @@ public class ExportQParserPlugin extends
     }
 
     public int hashCode() {
-      return id.hashCode()+((int)getBoost());
+      return 31 * super.hashCode() + id.hashCode();
     }
     
     public boolean equals(Object o) {
-      if(o instanceof ExportQuery) {
-        ExportQuery q = (ExportQuery)o;
-        return (this.id == q.id && getBoost() == q.getBoost());
-      } else {
+      if (super.equals(o) == false) {
         return false;
       }
+      ExportQuery q = (ExportQuery)o;
+      return id == q.id;
     }
     
     public String toString(String s) {
@@ -118,6 +111,7 @@ public class ExportQParserPlugin extends
     public ExportQuery(SolrParams localParams, SolrParams params, SolrQueryRequest request) throws IOException {
       this.leafCount = request.getSearcher().getTopReaderContext().leaves().size();
       id = new Object();
+      mainQuery = new MatchNoDocsQuery();
     }
   }
   

Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java Tue Sep  8 12:16:06 2015
@@ -40,6 +40,7 @@ import org.apache.lucene.queries.functio
 import org.apache.lucene.queries.function.valuesource.QueryValueSource;
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanQuery;
+import org.apache.lucene.search.BoostQuery;
 import org.apache.lucene.search.DisjunctionMaxQuery;
 import org.apache.lucene.search.MatchAllDocsQuery;
 import org.apache.lucene.search.MultiPhraseQuery;
@@ -473,8 +474,8 @@ public class ExtendedDismaxQParser exten
         for (String f : ff.keySet()) {
           Query fq = subQuery(f, FunctionQParserPlugin.NAME).getQuery();
           Float b = ff.get(f);
-          if (null != b) {
-            fq.setBoost(b);
+          if (null != b && b.floatValue() != 1f) {
+            fq = new BoostQuery(fq, b);
           }
           boostFunctions.add(fq);
         }
@@ -1213,8 +1214,8 @@ public class ExtendedDismaxQParser exten
         Query sub = getAliasedQuery();
         if (sub != null) {
           Float boost = a.fields.get(f);
-          if (boost != null) {
-            sub.setBoost(boost);
+          if (boost != null && boost.floatValue() != 1f) {
+            sub = new BoostQuery(sub, boost);
           }
           lst.add(sub);
         }

Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/HashQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/HashQParserPlugin.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/HashQParserPlugin.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/HashQParserPlugin.java Tue Sep  8 12:16:06 2015
@@ -108,18 +108,15 @@ public class HashQParserPlugin extends Q
     }
 
     public int hashCode() {
-      return keysParam.hashCode()+workers+worker+(int)getBoost();
+      return 31 * super.hashCode() + keysParam.hashCode()+workers+worker;
     }
 
     public boolean equals(Object o) {
-      if (o instanceof HashQuery) {
-        HashQuery h = (HashQuery)o;
-        if(keysParam.equals(h.keysParam) && workers == h.workers && worker == h.worker && getBoost() == h.getBoost()) {
-          return true;
-        }
+      if (super.equals(o) == false) {
+        return false;
       }
-
-      return false;
+      HashQuery h = (HashQuery)o;
+      return keysParam.equals(h.keysParam) && workers == h.workers && worker == h.worker;
     }
 
     public HashQuery(String keysParam, int workers, int worker) {

Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java Tue Sep  8 12:16:06 2015
@@ -147,7 +147,7 @@ class JoinQuery extends Query {
   @Override
   public Query rewrite(IndexReader reader) throws IOException {
     // don't rewrite the subQuery
-    return this;
+    return super.rewrite(reader);
   }
 
   @Override
@@ -515,7 +515,6 @@ class JoinQuery extends Query {
     JoinQuery other = (JoinQuery)o;
     return this.fromField.equals(other.fromField)
            && this.toField.equals(other.toField)
-           && this.getBoost() == other.getBoost()
            && this.q.equals(other.q)
            && (this.fromIndex == other.fromIndex || this.fromIndex != null && this.fromIndex.equals(other.fromIndex))
            && this.fromCoreOpenTime == other.fromCoreOpenTime

Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/MaxScoreQParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/MaxScoreQParser.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/MaxScoreQParser.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/MaxScoreQParser.java Tue Sep  8 12:16:06 2015
@@ -18,6 +18,7 @@ package org.apache.solr.search;
 
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanQuery;
+import org.apache.lucene.search.BoostQuery;
 import org.apache.lucene.search.DisjunctionMaxQuery;
 import org.apache.lucene.search.Query;
 import org.apache.solr.common.params.SolrParams;
@@ -54,7 +55,16 @@ public class MaxScoreQParser extends Luc
   @Override
   public Query parse() throws SyntaxError {
     Query q = super.parse();
-    if (!(q instanceof BooleanQuery)) {
+    float boost = 1f;
+    if (q instanceof BoostQuery) {
+      BoostQuery bq = (BoostQuery) q;
+      boost = bq.getBoost();
+      q = bq.getQuery();
+    }
+    if (q instanceof BooleanQuery == false) {
+      if (boost != 1f) {
+        q = new BoostQuery(q, boost);
+      }
       return q;
     }
     BooleanQuery obq = (BooleanQuery)q;
@@ -79,7 +89,9 @@ public class MaxScoreQParser extends Luc
       newqb.add(c);
     }
     Query newq = newqb.build();
-    newq.setBoost(obq.getBoost());
+    if (boost != 1f) {
+      newq = new BoostQuery(newq, boost);
+    }
     return newq;
   }
 }
\ No newline at end of file

Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/QueryParsing.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/QueryParsing.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/QueryParsing.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/QueryParsing.java Tue Sep  8 12:16:06 2015
@@ -22,6 +22,7 @@ import org.apache.lucene.queries.functio
 import org.apache.lucene.queries.function.valuesource.QueryValueSource;
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanQuery;
+import org.apache.lucene.search.BoostQuery;
 import org.apache.lucene.search.ConstantScoreQuery;
 import org.apache.lucene.search.FuzzyQuery;
 import org.apache.lucene.search.NumericRangeQuery;
@@ -430,6 +431,13 @@ public class QueryParsing {
   public static void toString(Query query, IndexSchema schema, Appendable out, int flags) throws IOException {
     boolean writeBoost = true;
 
+    float boost = 1f;
+    if (query instanceof BoostQuery) {
+      BoostQuery bq = (BoostQuery) query;
+      query = bq.getQuery();
+      boost = bq.getBoost();
+    }
+
     if (query instanceof TermQuery) {
       TermQuery q = (TermQuery) query;
       Term t = q.getTerm();
@@ -483,7 +491,7 @@ public class QueryParsing {
       BooleanQuery q = (BooleanQuery) query;
       boolean needParens = false;
 
-      if (q.getBoost() != 1.0 || q.getMinimumNumberShouldMatch() != 0 || q.isCoordDisabled()) {
+      if (q.getMinimumNumberShouldMatch() != 0 || q.isCoordDisabled()) {
         needParens = true;
       }
       if (needParens) {
@@ -559,9 +567,9 @@ public class QueryParsing {
       writeBoost = false;
     }
 
-    if (writeBoost && query.getBoost() != 1.0f) {
+    if (writeBoost && boost != 1.0f) {
       out.append("^");
-      out.append(Float.toString(query.getBoost()));
+      out.append(Float.toString(boost));
     }
 
   }

Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/QueryUtils.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/QueryUtils.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/QueryUtils.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/QueryUtils.java Tue Sep  8 12:16:06 2015
@@ -20,6 +20,7 @@ package org.apache.solr.search;
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanClause.Occur;
 import org.apache.lucene.search.BooleanQuery;
+import org.apache.lucene.search.BoostQuery;
 import org.apache.lucene.search.MatchAllDocsQuery;
 import org.apache.lucene.search.Query;
 
@@ -53,13 +54,19 @@ public class QueryUtils {
    * @return Absolute version of the Query
    */
   public static Query getAbs(Query q) {
+    if (q instanceof BoostQuery) {
+      BoostQuery bq = (BoostQuery) q;
+      Query subQ = bq.getQuery();
+      Query absSubQ = getAbs(subQ);
+      if (absSubQ == subQ) return q;
+      return new BoostQuery(absSubQ, bq.getBoost());
+    }
+
     if (q instanceof WrappedQuery) {
       Query subQ = ((WrappedQuery)q).getWrappedQuery();
       Query absSubQ = getAbs(subQ);
       if (absSubQ == subQ) return q;
-      WrappedQuery newQ = (WrappedQuery)q.clone();
-      newQ.setWrappedQuery(absSubQ);
-      return newQ;
+      return new WrappedQuery(absSubQ);
     }
 
     if (!(q instanceof BooleanQuery)) return q;
@@ -89,9 +96,7 @@ public class QueryUtils {
       for (BooleanClause clause : clauses) {
         newBqB.add(clause.getQuery(), BooleanClause.Occur.SHOULD);
       }
-      Query newBq = newBqB.build();
-      newBq.setBoost(bq.getBoost());
-      return newBq;
+      return newBqB.build();
     }
   }
 
@@ -109,6 +114,12 @@ public class QueryUtils {
    * The query passed in *must* be a negative query.
    */
   public static Query fixNegativeQuery(Query q) {
+    float boost = 1f;
+    if (q instanceof BoostQuery) {
+      BoostQuery bq = (BoostQuery) q;
+      boost = bq.getBoost();
+      q = bq.getQuery();
+    }
     BooleanQuery bq = (BooleanQuery) q;
     BooleanQuery.Builder newBqB = new BooleanQuery.Builder();
     newBqB.setDisableCoord(bq.isCoordDisabled());
@@ -118,8 +129,7 @@ public class QueryUtils {
     }
     newBqB.add(new MatchAllDocsQuery(), Occur.MUST);
     BooleanQuery newBq = newBqB.build();
-    newBq.setBoost(bq.getBoost());
-    return newBq;
+    return new BoostQuery(newBq, boost);
   }
 
 }

Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java Tue Sep  8 12:16:06 2015
@@ -97,7 +97,7 @@ public class ReRankQParserPlugin extends
     }
   }
 
-  private class ReRankQuery extends RankQuery {
+  private final class ReRankQuery extends RankQuery {
     private Query mainQuery = defaultQuery;
     private Query reRankQuery;
     private int reRankDocs;
@@ -106,19 +106,18 @@ public class ReRankQParserPlugin extends
     private Map<BytesRef, Integer> boostedPriority;
 
     public int hashCode() {
-      return mainQuery.hashCode()+reRankQuery.hashCode()+(int)reRankWeight+reRankDocs+(int)getBoost();
+      return 31 * super.hashCode() + mainQuery.hashCode()+reRankQuery.hashCode()+(int)reRankWeight+reRankDocs;
     }
 
     public boolean equals(Object o) {
-      if(o instanceof ReRankQuery) {
-        ReRankQuery rrq = (ReRankQuery)o;
-        return (mainQuery.equals(rrq.mainQuery) &&
-                reRankQuery.equals(rrq.reRankQuery) &&
-                reRankWeight == rrq.reRankWeight &&
-                reRankDocs == rrq.reRankDocs &&
-                getBoost() == rrq.getBoost());
+      if (super.equals(o) == false) {
+        return false;
       }
-      return false;
+      ReRankQuery rrq = (ReRankQuery)o;
+      return mainQuery.equals(rrq.mainQuery) &&
+             reRankQuery.equals(rrq.reRankQuery) &&
+             reRankWeight == rrq.reRankWeight &&
+             reRankDocs == rrq.reRankDocs;
     }
 
     public ReRankQuery(Query reRankQuery, int reRankDocs, double reRankWeight, int length) {
@@ -161,18 +160,14 @@ public class ReRankQParserPlugin extends
     }
 
     public Query rewrite(IndexReader reader) throws IOException {
+      if (getBoost() != 1f) {
+        return super.rewrite(reader);
+      }
       Query q = mainQuery.rewrite(reader);
-      if(q == mainQuery) {
-        return this;
-      } else {
-        return clone().wrap(q);
+      if (q != mainQuery) {
+        return new ReRankQuery(reRankQuery, reRankDocs, reRankWeight, length).wrap(q);
       }
-    }
-
-    public ReRankQuery clone() {
-      ReRankQuery clonedQuery =  new ReRankQuery(reRankQuery, reRankDocs, reRankWeight, length);
-      clonedQuery.setBoost(getBoost());
-      return clonedQuery;
+      return super.rewrite(reader);
     }
 
     public Weight createWeight(IndexSearcher searcher, boolean needsScores) throws IOException{

Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/SimpleQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/SimpleQParserPlugin.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/SimpleQParserPlugin.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/SimpleQParserPlugin.java Tue Sep  8 12:16:06 2015
@@ -21,6 +21,7 @@ import org.apache.lucene.analysis.Analyz
 import org.apache.lucene.queryparser.simple.SimpleQueryParser;
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanQuery;
+import org.apache.lucene.search.BoostQuery;
 import org.apache.lucene.search.Query;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.SimpleParams;
@@ -205,7 +206,10 @@ public class SimpleQParserPlugin extends
           prefix = type.getPrefixQuery(qParser, sf, text);
         }
 
-        prefix.setBoost(entry.getValue());
+        float boost = entry.getValue();
+        if (boost != 1f) {
+          prefix = new BoostQuery(prefix, boost);
+        }
         bq.add(prefix, BooleanClause.Occur.SHOULD);
       }
 

Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/SolrConstantScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/SolrConstantScoreQuery.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/SolrConstantScoreQuery.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/SolrConstantScoreQuery.java Tue Sep  8 12:16:06 2015
@@ -6,7 +6,6 @@ import java.util.Map;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.queries.function.ValueSource;
-import org.apache.lucene.search.ConstantScoreQuery;
 import org.apache.lucene.search.ConstantScoreScorer;
 import org.apache.lucene.search.ConstantScoreWeight;
 import org.apache.lucene.search.DocIdSet;
@@ -16,7 +15,6 @@ import org.apache.lucene.search.IndexSea
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.Scorer;
 import org.apache.lucene.search.Weight;
-import org.apache.lucene.util.Bits;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
@@ -42,13 +40,12 @@ import org.apache.lucene.util.Bits;
  *
  * Experimental and subject to change.
  */
-public class SolrConstantScoreQuery extends ConstantScoreQuery implements ExtendedQuery {
+public class SolrConstantScoreQuery extends Query implements ExtendedQuery {
   private final Filter filter;
   boolean cache = true;  // cache by default
   int cost;
 
   public SolrConstantScoreQuery(Filter filter) {
-    super(filter);
     this.filter = filter;
   }
 
@@ -86,12 +83,6 @@ public class SolrConstantScoreQuery exte
     return cost;
   }
 
-
-  @Override
-  public Query rewrite(IndexReader reader) throws IOException {
-    return this;
-  }
-
   protected class ConstantWeight extends ConstantScoreWeight {
     private Map context;
 
@@ -125,8 +116,7 @@ public class SolrConstantScoreQuery exte
   /** Prints a user-readable version of this query. */
   @Override
   public String toString(String field) {
-    return ExtendedQueryBase.getOptionsString(this) + "ConstantScore(" + filter.toString()
-      + (getBoost()==1.0 ? ")" : "^" + getBoost());
+    return ExtendedQueryBase.getOptionsString(this) + "ConstantScore(" + filter.toString() + ")";
   }
 
   /** Returns true if <code>o</code> is equal to this. */

Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/WrappedQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/WrappedQuery.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/WrappedQuery.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/WrappedQuery.java Tue Sep  8 12:16:06 2015
@@ -25,7 +25,7 @@ import org.apache.lucene.search.Weight;
 import java.io.IOException;
 
 /** A simple query that wraps another query and implements ExtendedQuery. */
-public class WrappedQuery extends ExtendedQueryBase {
+public final class WrappedQuery extends ExtendedQueryBase {
   private Query q;
 
   public WrappedQuery(Query q) {
@@ -41,34 +41,20 @@ public class WrappedQuery extends Extend
   }
 
   @Override
-  public void setBoost(float b) {
-    q.setBoost(b);
-  }
-
-  @Override
-  public float getBoost() {
-    return q.getBoost();
-  }
-
-  @Override
   public Weight createWeight(IndexSearcher searcher, boolean needsScores) throws IOException {
     return q.createWeight(searcher, needsScores);
   }
 
   @Override
   public Query rewrite(IndexReader reader) throws IOException {
+    if (getBoost() != 1f) {
+      return super.rewrite(reader);
+    }
     // currently no need to continue wrapping at this point.
     return q.rewrite(reader);
   }
 
   @Override
-  public WrappedQuery clone() {
-    WrappedQuery newQ = (WrappedQuery)super.clone();
-    newQ.q = (Query) q.clone();
-    return newQ;
-  }
-
-  @Override
   public int hashCode() {
     return q.hashCode();
   }

Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java Tue Sep  8 12:16:06 2015
@@ -88,6 +88,9 @@ public class ScoreJoinQParserPlugin exte
 
     @Override
     public Query rewrite(IndexReader reader) throws IOException {
+      if (getBoost() != 1f) {
+        return super.rewrite(reader);
+      }
       SolrRequestInfo info = SolrRequestInfo.getRequestInfo();
 
       CoreContainer container = info.getReq().getCore().getCoreDescriptor().getCoreContainer();
@@ -107,7 +110,6 @@ public class ScoreJoinQParserPlugin exte
         fromCore.close();
         fromHolder.decref();
       }
-      joinQuery.setBoost(getBoost());
       return joinQuery.rewrite(reader);
     }
 
@@ -159,10 +161,12 @@ public class ScoreJoinQParserPlugin exte
 
     @Override
     public Query rewrite(IndexReader reader) throws IOException {
+      if (getBoost() != 1f) {
+        return super.rewrite(reader);
+      }
       SolrRequestInfo info = SolrRequestInfo.getRequestInfo();
       final Query jq = JoinUtil.createJoinQuery(fromField, true,
           toField, fromQuery, info.getReq().getSearcher(), scoreMode);
-      jq.setBoost(getBoost());
       return jq.rewrite(reader);
     }
 

Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/update/DeleteByQueryWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/update/DeleteByQueryWrapper.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/update/DeleteByQueryWrapper.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/update/DeleteByQueryWrapper.java Tue Sep  8 12:16:06 2015
@@ -57,11 +57,14 @@ final class DeleteByQueryWrapper extends
   
   @Override
   public Query rewrite(IndexReader reader) throws IOException {
+    if (getBoost() != 1f) {
+      return super.rewrite(reader);
+    }
     Query rewritten = in.rewrite(reader);
     if (rewritten != in) {
       return new DeleteByQueryWrapper(rewritten, schema);
     } else {
-      return this;
+      return super.rewrite(reader);
     }
   }
   

Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java Tue Sep  8 12:16:06 2015
@@ -31,12 +31,12 @@ import java.util.Set;
 import java.util.TreeMap;
 import java.util.regex.Pattern;
 
-import com.google.common.collect.ImmutableMap;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.index.IndexableField;
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanClause.Occur;
 import org.apache.lucene.search.BooleanQuery;
+import org.apache.lucene.search.BoostQuery;
 import org.apache.lucene.search.DisjunctionMaxQuery;
 import org.apache.lucene.search.Explanation;
 import org.apache.lucene.search.Query;
@@ -50,7 +50,6 @@ import org.apache.solr.common.params.Sol
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.common.util.StrUtils;
-import org.apache.solr.core.InitParams;
 import org.apache.solr.core.RequestParams;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.handler.component.HighlightComponent;
@@ -77,6 +76,8 @@ import org.apache.solr.search.SolrIndexS
 import org.apache.solr.search.SolrQueryParser;
 import org.apache.solr.search.SyntaxError;
 
+import com.google.common.collect.ImmutableMap;
+
 /**
  * <p>Utilities that may be of use to RequestHandlers.</p>
  *
@@ -676,18 +677,27 @@ public class SolrPluginUtils {
    * </p>
    */
   public static void flattenBooleanQuery(BooleanQuery.Builder to, BooleanQuery from) {
+    flattenBooleanQuery(to, from, 1f);
+  }
+
+  private static void flattenBooleanQuery(BooleanQuery.Builder to, BooleanQuery from, float fromBoost) {
 
     for (BooleanClause clause : from.clauses()) {
 
       Query cq = clause.getQuery();
-      cq.setBoost(cq.getBoost() * from.getBoost());
+      float boost = fromBoost;
+      while (cq instanceof BoostQuery) {
+        BoostQuery bq = (BoostQuery) cq;
+        cq = bq.getQuery();
+        boost *= bq.getBoost();
+      }
 
       if (cq instanceof BooleanQuery
           && !clause.isRequired()
           && !clause.isProhibited()) {
 
         /* we can recurse */
-        flattenBooleanQuery(to, (BooleanQuery)cq);
+        flattenBooleanQuery(to, (BooleanQuery)cq, boost);
 
       } else {
         to.add(clause);
@@ -839,7 +849,7 @@ public class SolrPluginUtils {
           Query sub = getFieldQuery(f,queryText,quoted);
           if (null != sub) {
             if (null != a.fields.get(f)) {
-              sub.setBoost(a.fields.get(f));
+              sub = new BoostQuery(sub, a.fields.get(f));
             }
             q.add(sub);
             ok = true;

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/QueryEqualityTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/QueryEqualityTest.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/QueryEqualityTest.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/QueryEqualityTest.java Tue Sep  8 12:16:06 2015
@@ -19,7 +19,6 @@ package org.apache.solr.search;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.QueryUtils;
 import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.request.SolrRequestInfo;
 import org.apache.solr.response.SolrQueryResponse;
@@ -938,19 +937,18 @@ public class QueryEqualityTest extends S
       for (int i = 0; i < inputs.length; i++) {
         queries[i] = (QParser.getParser(inputs[i], defType, req).getQuery());
       }
+      for (int i = 0; i < queries.length; i++) {
+        QueryUtils.check(queries[i]);
+        // yes starting j=0 is redundent, we're making sure every query 
+        // is equal to itself, and that the quality checks work regardless 
+        // of which caller/callee is used.
+        for (int j = 0; j < queries.length; j++) {
+          QueryUtils.checkEqual(queries[i], queries[j]);
+        }
+      }
     } finally {
       SolrRequestInfo.clearRequestInfo();
     }
-
-    for (int i = 0; i < queries.length; i++) {
-      QueryUtils.check(queries[i]);
-      // yes starting j=0 is redundent, we're making sure every query 
-      // is equal to itself, and that the quality checks work regardless 
-      // of which caller/callee is used.
-      for (int j = 0; j < queries.length; j++) {
-        QueryUtils.checkEqual(queries[i], queries[j]);
-      }
-    }
   }
 
   /**

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java Tue Sep  8 12:16:06 2015
@@ -23,6 +23,7 @@ import java.util.Set;
 
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanQuery;
+import org.apache.lucene.search.BoostQuery;
 import org.apache.lucene.search.DisjunctionMaxQuery;
 import org.apache.lucene.search.FuzzyQuery;
 import org.apache.lucene.search.Query;
@@ -1054,27 +1055,35 @@ public class TestExtendedDismaxParser ex
 
   private boolean containsClause(Query query, String field, String value,
       int boost, boolean fuzzy) {
-    
+
+    float queryBoost = 1f;
+    if (query instanceof BoostQuery) {
+      BoostQuery bq = (BoostQuery) query;
+      query = bq.getQuery();
+      queryBoost = bq.getBoost();
+    }
+
     if(query instanceof BooleanQuery) {
       return containsClause((BooleanQuery)query, field, value, boost, fuzzy);
     }
     if(query instanceof DisjunctionMaxQuery) {
       return containsClause((DisjunctionMaxQuery)query, field, value, boost, fuzzy);
     }
+    if (boost != queryBoost) {
+      return false;
+    }
     if(query instanceof TermQuery && !fuzzy) {
-      return containsClause((TermQuery)query, field, value, boost);
+      return containsClause((TermQuery)query, field, value);
     }
     if(query instanceof FuzzyQuery && fuzzy) {
-      return containsClause((FuzzyQuery)query, field, value, boost);
+      return containsClause((FuzzyQuery)query, field, value);
     }
     return false;
   }
 
-  private boolean containsClause(FuzzyQuery query, String field, String value,
-      int boost) {
+  private boolean containsClause(FuzzyQuery query, String field, String value) {
     if(query.getTerm().field().equals(field) && 
-       query.getTerm().bytes().utf8ToString().equals(value) && 
-       query.getBoost() == boost) {
+       query.getTerm().bytes().utf8ToString().equals(value)) {
       return true;
     }
     return false;
@@ -1089,10 +1098,9 @@ public class TestExtendedDismaxParser ex
     return false;
   }
   
-  private boolean containsClause(TermQuery query, String field, String value, int boost) {
+  private boolean containsClause(TermQuery query, String field, String value) {
     if(query.getTerm().field().equals(field) && 
-       query.getTerm().bytes().utf8ToString().equals(value) && 
-       query.getBoost() == boost) {
+       query.getTerm().bytes().utf8ToString().equals(value)) {
       return true;
     }
     return false;

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/TestMaxScoreQueryParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/TestMaxScoreQueryParser.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/TestMaxScoreQueryParser.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/TestMaxScoreQueryParser.java Tue Sep  8 12:16:06 2015
@@ -17,6 +17,7 @@ package org.apache.solr.search;
  * limitations under the License.
  */
 
+import org.apache.lucene.index.Term;
 import org.apache.lucene.search.*;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.util.AbstractSolrTestCase;
@@ -40,10 +41,10 @@ public class TestMaxScoreQueryParser ext
   @Test
   public void testFallbackToLucene() {
     q = parse("foo");
-    assertTrue(q instanceof TermQuery);
+    assertEquals(new TermQuery(new Term("text", "foo")), q);
 
     q = parse("foo^3.0");
-    assertTrue(q instanceof TermQuery);
+    assertEquals(new BoostQuery(new TermQuery(new Term("text", "foo")), 3f), q);
 
     q = parse("price:[0 TO 10]");
     assertTrue(q instanceof NumericRangeQuery);
@@ -100,7 +101,8 @@ public class TestMaxScoreQueryParser ext
   public void testBoost() {
     // Simple term query
     q = parse("foo^3.0");
-    assertEquals(3.0, q.getBoost(), 1e-15);
+    assertTrue(q instanceof BoostQuery);
+    assertEquals(3.0, ((BoostQuery) q).getBoost(), 1e-15);
 
     // Some DMQ and one plain required
     q = parse("foo^5.0 bar^6.0 +baz^7");
@@ -108,12 +110,12 @@ public class TestMaxScoreQueryParser ext
     assertEquals(2, clauses.length);
     assertTrue(clauses[0].getQuery() instanceof DisjunctionMaxQuery);
     DisjunctionMaxQuery dmq = ((DisjunctionMaxQuery) clauses[0].getQuery());
-    float fooClause = ((BooleanQuery)dmq.getDisjuncts().get(0)).clauses().iterator().next().getQuery().getBoost();
-    assertEquals(5.0, fooClause, 1e-15);
-    float barClause = ((BooleanQuery)dmq.getDisjuncts().get(1)).clauses().iterator().next().getQuery().getBoost();
-    assertEquals(6.0, barClause, 1e-15);
-    assertEquals(7.0, clauses[1].getQuery().getBoost(), 1e-15);
-    assertEquals(1.0, q.getBoost(), 1e-15);
+    Query fooClause = ((BooleanQuery)dmq.getDisjuncts().get(0)).clauses().iterator().next().getQuery();
+    assertEquals(5.0, ((BoostQuery) fooClause).getBoost(), 1e-15);
+    Query barClause = ((BooleanQuery)dmq.getDisjuncts().get(1)).clauses().iterator().next().getQuery();
+    assertEquals(6.0, ((BoostQuery) barClause).getBoost(), 1e-15);
+    assertEquals(7.0, ((BoostQuery) clauses[1].getQuery()).getBoost(), 1e-15);
+    assertFalse(q instanceof BoostQuery);
 
     // Grouped with parens on top level
     q = parse("(foo^2.0 bar)^3.0");
@@ -121,11 +123,11 @@ public class TestMaxScoreQueryParser ext
     assertEquals(1, clauses.length);
     assertTrue(clauses[0].getQuery() instanceof DisjunctionMaxQuery);
     dmq = ((DisjunctionMaxQuery) clauses[0].getQuery());
-    fooClause = ((BooleanQuery)dmq.getDisjuncts().get(0)).clauses().iterator().next().getQuery().getBoost();
-    assertEquals(2.0, fooClause, 1e-15);
-    barClause = ((BooleanQuery)dmq.getDisjuncts().get(1)).clauses().iterator().next().getQuery().getBoost();
-    assertEquals(1.0, barClause, 1e-15);
-    assertEquals(3.0, q.getBoost(), 1e-15);
+    fooClause = ((BooleanQuery)dmq.getDisjuncts().get(0)).clauses().iterator().next().getQuery();
+    assertEquals(2.0, ((BoostQuery) fooClause).getBoost(), 1e-15);
+    barClause = ((BooleanQuery)dmq.getDisjuncts().get(1)).clauses().iterator().next().getQuery();
+    assertFalse(barClause instanceof BoostQuery);
+    assertEquals(3.0, ((BoostQuery) q).getBoost(), 1e-15);
   }
 
   //
@@ -148,6 +150,9 @@ public class TestMaxScoreQueryParser ext
   }
 
   private BooleanClause[] clauses(Query q) {
+    while (q instanceof BoostQuery) {
+      q = ((BoostQuery) q).getQuery();
+    }
     return ((BooleanQuery) q).clauses().toArray(new BooleanClause[0]);
   }
 }

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/TestRankQueryPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/TestRankQueryPlugin.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/TestRankQueryPlugin.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/TestRankQueryPlugin.java Tue Sep  8 12:16:06 2015
@@ -117,14 +117,6 @@ public class TestRankQueryPlugin extends
       return q.createWeight(indexSearcher, needsScores);
     }
 
-    public void setBoost(float boost) {
-      q.setBoost(boost);
-    }
-
-    public float getBoost() {
-      return q.getBoost();
-    }
-
     @Override
     public String toString(String field) {
       return q.toString(field);

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java Tue Sep  8 12:16:06 2015
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.search;
 
+import org.apache.lucene.search.BoostQuery;
 import org.apache.lucene.search.ConstantScoreQuery;
 import org.apache.lucene.search.Query;
 import org.apache.solr.SolrTestCaseJ4;
@@ -155,14 +156,14 @@ public class TestSolrQueryParser extends
     assertJQ(req("fq","id:1", "fl","id,score", "q", subqq+"^3", "qq","text:x^2"
         , "debug","query"
     )
-        ,"/debug/parsedquery=='text:x^6.0'"
+        ,"/debug/parsedquery_toString=='(text:x^2.0)^3.0'"
     );
 
     // boost should multiply
     assertJQ(req("fq","id:1", "fl","id,score", "q", "  {!v=$qq}^3", "qq","text:x^2"
         , "debug","query"
     )
-        ,"/debug/parsedquery=='text:x^6.0'"
+        ,"/debug/parsedquery_toString=='(text:x^2.0)^3.0'"
     );
 
   }
@@ -175,13 +176,15 @@ public class TestSolrQueryParser extends
 
     QParser qParser = QParser.getParser("text:x^=3", "lucene", req);
     Query q = qParser.getQuery();
-    assertTrue( q instanceof ConstantScoreQuery);
-    assertEquals(3.0, q.getBoost(), 0.0f);
+    assertTrue( q instanceof BoostQuery);
+    assertTrue(((BoostQuery) q).getQuery() instanceof ConstantScoreQuery);
+    assertEquals(3.0, ((BoostQuery) q).getBoost(), 0.0f);
 
     qParser = QParser.getParser("(text:x text:y)^=-3", "lucene", req);
     q = qParser.getQuery();
-    assertTrue( q instanceof ConstantScoreQuery );
-    assertEquals(-3.0, q.getBoost(), 0.0f);
+    assertTrue( q instanceof BoostQuery);
+    assertTrue(((BoostQuery) q).getQuery() instanceof ConstantScoreQuery);
+    assertEquals(-3.0, ((BoostQuery) q).getBoost(), 0.0f);
 
     req.close();
   }

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/join/TestScoreJoinQPScore.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/join/TestScoreJoinQPScore.java?rev=1701783&r1=1701782&r2=1701783&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/join/TestScoreJoinQPScore.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/join/TestScoreJoinQPScore.java Tue Sep  8 12:16:06 2015
@@ -24,6 +24,7 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Random;
 
+import org.apache.lucene.search.BoostQuery;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.join.ScoreMode;
 import org.apache.solr.SolrTestCaseJ4;
@@ -191,7 +192,9 @@ public class TestScoreJoinQPScore extend
     final SolrQueryRequest req = req("q", "{!join from=movieId_s to=id score=" + score + " b=200}title:movie", "fl", "id,score", "omitHeader", "true");
     SolrRequestInfo.setRequestInfo(new SolrRequestInfo(req, new SolrQueryResponse()));
     final Query luceneQ = QParser.getParser(req.getParams().get("q"), null, req).getQuery().rewrite(req.getSearcher().getLeafReader());
-    assertEquals("" + luceneQ, Float.floatToIntBits(200), Float.floatToIntBits(luceneQ.getBoost()));
+    assertTrue(luceneQ instanceof BoostQuery);
+    float boost = ((BoostQuery) luceneQ).getBoost();
+    assertEquals("" + luceneQ, Float.floatToIntBits(200), Float.floatToIntBits(boost));
     SolrRequestInfo.clearRequestInfo();
     req.close();
   }