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/07 15:34:48 UTC
svn commit: r1701621 [6/6] - in /lucene/dev/trunk: lucene/
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/
lucene/core/src/java/org/apach...
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java Mon Sep 7 13:34:46 2015
@@ -171,11 +171,11 @@ 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;
}
@@ -186,8 +186,7 @@ public class CollapsingQParserPlugin ext
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()) {
+ this.nullPolicy == c.nullPolicy) {
return true;
}
}
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/DisMaxQParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/DisMaxQParser.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/DisMaxQParser.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/DisMaxQParser.java Mon Sep 7 13:34:46 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/trunk/solr/core/src/java/org/apache/solr/search/ExportQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ExportQParserPlugin.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ExportQParserPlugin.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ExportQParserPlugin.java Mon Sep 7 13:34:46 2015
@@ -87,7 +87,7 @@ public class ExportQParserPlugin extends
public Query rewrite(IndexReader reader) throws IOException {
Query q = mainQuery.rewrite(reader);
if(q == mainQuery) {
- return this;
+ return super.rewrite(reader);
} else {
return clone().wrap(q);
}
@@ -102,16 +102,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) {
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java Mon Sep 7 13:34:46 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/trunk/solr/core/src/java/org/apache/solr/search/HashQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/HashQParserPlugin.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/HashQParserPlugin.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/HashQParserPlugin.java Mon Sep 7 13:34:46 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/trunk/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java Mon Sep 7 13:34:46 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/trunk/solr/core/src/java/org/apache/solr/search/MaxScoreQParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/MaxScoreQParser.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/MaxScoreQParser.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/MaxScoreQParser.java Mon Sep 7 13:34:46 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/trunk/solr/core/src/java/org/apache/solr/search/QueryParsing.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/QueryParsing.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/QueryParsing.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/QueryParsing.java Mon Sep 7 13:34:46 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/trunk/solr/core/src/java/org/apache/solr/search/QueryUtils.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/QueryUtils.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/QueryUtils.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/QueryUtils.java Mon Sep 7 13:34:46 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/trunk/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java Mon Sep 7 13:34:46 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) {
@@ -162,17 +161,10 @@ public class ReRankQParserPlugin extends
public Query rewrite(IndexReader reader) throws IOException {
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/trunk/solr/core/src/java/org/apache/solr/search/SimpleQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SimpleQParserPlugin.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SimpleQParserPlugin.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SimpleQParserPlugin.java Mon Sep 7 13:34:46 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/trunk/solr/core/src/java/org/apache/solr/search/SolrConstantScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrConstantScoreQuery.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrConstantScoreQuery.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrConstantScoreQuery.java Mon Sep 7 13:34:46 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/trunk/solr/core/src/java/org/apache/solr/search/WrappedQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/WrappedQuery.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/WrappedQuery.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/WrappedQuery.java Mon Sep 7 13:34:46 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,16 +41,6 @@ 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);
}
@@ -62,13 +52,6 @@ public class WrappedQuery extends Extend
}
@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/trunk/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java Mon Sep 7 13:34:46 2015
@@ -107,7 +107,6 @@ public class ScoreJoinQParserPlugin exte
fromCore.close();
fromHolder.decref();
}
- joinQuery.setBoost(getBoost());
return joinQuery.rewrite(reader);
}
@@ -162,7 +161,6 @@ public class ScoreJoinQParserPlugin exte
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/trunk/solr/core/src/java/org/apache/solr/update/DeleteByQueryWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/DeleteByQueryWrapper.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/DeleteByQueryWrapper.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/DeleteByQueryWrapper.java Mon Sep 7 13:34:46 2015
@@ -61,7 +61,7 @@ final class DeleteByQueryWrapper extends
if (rewritten != in) {
return new DeleteByQueryWrapper(rewritten, schema);
} else {
- return this;
+ return super.rewrite(reader);
}
}
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java Mon Sep 7 13:34:46 2015
@@ -32,11 +32,13 @@ import java.util.TreeMap;
import java.util.regex.Pattern;
import com.google.common.collect.ImmutableMap;
+
import org.apache.lucene.index.StorableField;
import org.apache.lucene.index.StoredDocument;
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;
@@ -703,18 +705,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);
@@ -866,7 +877,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/trunk/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java Mon Sep 7 13:34:46 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/trunk/solr/core/src/test/org/apache/solr/search/TestMaxScoreQueryParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestMaxScoreQueryParser.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestMaxScoreQueryParser.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestMaxScoreQueryParser.java Mon Sep 7 13:34:46 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/trunk/solr/core/src/test/org/apache/solr/search/TestRankQueryPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestRankQueryPlugin.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestRankQueryPlugin.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestRankQueryPlugin.java Mon Sep 7 13:34:46 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/trunk/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java Mon Sep 7 13:34:46 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;
@@ -154,14 +155,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'"
);
}
@@ -174,13 +175,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/trunk/solr/core/src/test/org/apache/solr/search/join/TestScoreJoinQPScore.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/join/TestScoreJoinQPScore.java?rev=1701621&r1=1701620&r2=1701621&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/join/TestScoreJoinQPScore.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/join/TestScoreJoinQPScore.java Mon Sep 7 13:34:46 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();
}