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();
}