[QUERY] Remove Queries#optimizeQuery(...)
This method tires to optimize boolean queries if there is only one clause. Yet BooleanQuery already does that internally This optimization is unneeded. Closes #6743
This commit is contained in:
parent
d5dd9896c8
commit
10cfc2fa0b
|
@ -43,7 +43,6 @@ import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.elasticsearch.common.lucene.search.Queries.fixNegativeQueryIfNeeded;
|
import static org.elasticsearch.common.lucene.search.Queries.fixNegativeQueryIfNeeded;
|
||||||
import static org.elasticsearch.common.lucene.search.Queries.optimizeQuery;
|
|
||||||
import static org.elasticsearch.index.query.support.QueryParsers.wrapSmartNameQuery;
|
import static org.elasticsearch.index.query.support.QueryParsers.wrapSmartNameQuery;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -839,7 +838,7 @@ public class MapperQueryParser extends QueryParser {
|
||||||
if (q == null) {
|
if (q == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return optimizeQuery(fixNegativeQueryIfNeeded(q));
|
return fixNegativeQueryIfNeeded(q);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void applyBoost(String field, Query q) {
|
private void applyBoost(String field, Query q) {
|
||||||
|
|
|
@ -49,30 +49,6 @@ public class Queries {
|
||||||
return new MatchNoDocsQuery();
|
return new MatchNoDocsQuery();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Optimizes the given query and returns the optimized version of it.
|
|
||||||
*/
|
|
||||||
public static Query optimizeQuery(Query q) {
|
|
||||||
if (q instanceof BooleanQuery) {
|
|
||||||
BooleanQuery booleanQuery = (BooleanQuery) q;
|
|
||||||
BooleanClause[] clauses = booleanQuery.getClauses();
|
|
||||||
if (clauses.length == 1) {
|
|
||||||
BooleanClause clause = clauses[0];
|
|
||||||
if (clause.getOccur() == BooleanClause.Occur.MUST) {
|
|
||||||
Query query = clause.getQuery();
|
|
||||||
query.setBoost(booleanQuery.getBoost() * query.getBoost());
|
|
||||||
return optimizeQuery(query);
|
|
||||||
}
|
|
||||||
if (clause.getOccur() == BooleanClause.Occur.SHOULD && booleanQuery.getMinimumNumberShouldMatch() > 0) {
|
|
||||||
Query query = clause.getQuery();
|
|
||||||
query.setBoost(booleanQuery.getBoost() * query.getBoost());
|
|
||||||
return optimizeQuery(query);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return q;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isNegativeQuery(Query q) {
|
public static boolean isNegativeQuery(Query q) {
|
||||||
if (!(q instanceof BooleanQuery)) {
|
if (!(q instanceof BooleanQuery)) {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -32,7 +32,6 @@ import java.util.List;
|
||||||
|
|
||||||
import static com.google.common.collect.Lists.newArrayList;
|
import static com.google.common.collect.Lists.newArrayList;
|
||||||
import static org.elasticsearch.common.lucene.search.Queries.fixNegativeQueryIfNeeded;
|
import static org.elasticsearch.common.lucene.search.Queries.fixNegativeQueryIfNeeded;
|
||||||
import static org.elasticsearch.common.lucene.search.Queries.optimizeQuery;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -141,7 +140,7 @@ public class BoolQueryParser implements QueryParser {
|
||||||
}
|
}
|
||||||
booleanQuery.setBoost(boost);
|
booleanQuery.setBoost(boost);
|
||||||
Queries.applyMinimumShouldMatch(booleanQuery, minimumShouldMatch);
|
Queries.applyMinimumShouldMatch(booleanQuery, minimumShouldMatch);
|
||||||
Query query = optimizeQuery(adjustPureNegative ? fixNegativeQueryIfNeeded(booleanQuery) : booleanQuery);
|
Query query = adjustPureNegative ? fixNegativeQueryIfNeeded(booleanQuery) : booleanQuery;
|
||||||
if (queryName != null) {
|
if (queryName != null) {
|
||||||
parseContext.addNamedQuery(queryName, query);
|
parseContext.addNamedQuery(queryName, query);
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,7 +41,6 @@ import java.io.IOException;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
import static org.elasticsearch.common.lucene.search.Queries.fixNegativeQueryIfNeeded;
|
import static org.elasticsearch.common.lucene.search.Queries.fixNegativeQueryIfNeeded;
|
||||||
import static org.elasticsearch.common.lucene.search.Queries.optimizeQuery;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -228,7 +227,7 @@ public class QueryStringQueryParser implements QueryParser {
|
||||||
if (qpSettings.boost() != QueryParserSettings.DEFAULT_BOOST) {
|
if (qpSettings.boost() != QueryParserSettings.DEFAULT_BOOST) {
|
||||||
query.setBoost(query.getBoost() * qpSettings.boost());
|
query.setBoost(query.getBoost() * qpSettings.boost());
|
||||||
}
|
}
|
||||||
query = optimizeQuery(fixNegativeQueryIfNeeded(query));
|
query = fixNegativeQueryIfNeeded(query);
|
||||||
if (query instanceof BooleanQuery) {
|
if (query instanceof BooleanQuery) {
|
||||||
Queries.applyMinimumShouldMatch((BooleanQuery) query, qpSettings.minimumShouldMatch());
|
Queries.applyMinimumShouldMatch((BooleanQuery) query, qpSettings.minimumShouldMatch());
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,7 +35,6 @@ import java.util.List;
|
||||||
|
|
||||||
import static com.google.common.collect.Lists.newArrayList;
|
import static com.google.common.collect.Lists.newArrayList;
|
||||||
import static org.elasticsearch.common.lucene.search.Queries.fixNegativeQueryIfNeeded;
|
import static org.elasticsearch.common.lucene.search.Queries.fixNegativeQueryIfNeeded;
|
||||||
import static org.elasticsearch.common.lucene.search.Queries.optimizeQuery;
|
|
||||||
import static org.elasticsearch.index.query.support.QueryParsers.wrapSmartNameQuery;
|
import static org.elasticsearch.index.query.support.QueryParsers.wrapSmartNameQuery;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -128,7 +127,7 @@ public class TermsQueryParser implements QueryParser {
|
||||||
}
|
}
|
||||||
booleanQuery.setBoost(boost);
|
booleanQuery.setBoost(boost);
|
||||||
Queries.applyMinimumShouldMatch(booleanQuery, minimumShouldMatch);
|
Queries.applyMinimumShouldMatch(booleanQuery, minimumShouldMatch);
|
||||||
Query query = wrapSmartNameQuery(optimizeQuery(fixNegativeQueryIfNeeded(booleanQuery)), smartNameFieldMappers, parseContext);
|
Query query = wrapSmartNameQuery(fixNegativeQueryIfNeeded(booleanQuery), smartNameFieldMappers, parseContext);
|
||||||
if (queryName != null) {
|
if (queryName != null) {
|
||||||
parseContext.addNamedQuery(queryName, query);
|
parseContext.addNamedQuery(queryName, query);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue