Skip to content

Commit 6baf6fd

Browse files
committed
Query DSL: Allow to default certain settings in query_string / field queries, closes elastic#1540.
1 parent 10bc80b commit 6baf6fd

File tree

4 files changed

+28
-7
lines changed

4 files changed

+28
-7
lines changed

modules/elasticsearch/src/main/java/org/apache/lucene/queryParser/QueryParserSettings.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,21 @@
2828
*/
2929
public class QueryParserSettings {
3030

31+
public static final boolean DEFAULT_ALLOW_LEADING_WILDCARD = true;
32+
public static final boolean DEFAULT_ANALYZE_WILDCARD = false;
33+
3134
private String queryString;
3235
private String defaultField;
3336
private float boost = 1.0f;
3437
private MapperQueryParser.Operator defaultOperator = QueryParser.Operator.OR;
3538
private boolean autoGeneratePhraseQueries = false;
36-
private boolean allowLeadingWildcard = true;
39+
private boolean allowLeadingWildcard = DEFAULT_ALLOW_LEADING_WILDCARD;
3740
private boolean lowercaseExpandedTerms = true;
3841
private boolean enablePositionIncrements = true;
3942
private int phraseSlop = 0;
4043
private float fuzzyMinSim = FuzzyQuery.defaultMinSimilarity;
4144
private int fuzzyPrefixLength = FuzzyQuery.defaultPrefixLength;
42-
private boolean analyzeWildcard = false;
45+
private boolean analyzeWildcard = DEFAULT_ANALYZE_WILDCARD;
4346
private boolean escape = false;
4447
private Analyzer analyzer = null;
4548
private MultiTermQuery.RewriteMethod rewriteMethod = MultiTermQuery.CONSTANT_SCORE_AUTO_REWRITE_DEFAULT;

modules/elasticsearch/src/main/java/org/elasticsearch/index/query/FieldQueryParser.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.apache.lucene.search.Query;
2727
import org.elasticsearch.common.inject.Inject;
2828
import org.elasticsearch.common.lucene.search.Queries;
29+
import org.elasticsearch.common.settings.Settings;
2930
import org.elasticsearch.common.xcontent.XContentParser;
3031
import org.elasticsearch.index.query.support.QueryParsers;
3132

@@ -40,7 +41,13 @@ public class FieldQueryParser implements QueryParser {
4041

4142
public static final String NAME = "field";
4243

43-
@Inject public FieldQueryParser() {
44+
private final boolean defaultAnalyzeWildcard;
45+
private final boolean defaultAllowLeadingWildcard;
46+
47+
@Inject
48+
public FieldQueryParser(Settings settings) {
49+
this.defaultAnalyzeWildcard = settings.getAsBoolean("indices.query.query_string.analyze_wildcard", QueryParserSettings.DEFAULT_ANALYZE_WILDCARD);
50+
this.defaultAllowLeadingWildcard = settings.getAsBoolean("indices.query.query_string.allowLeadingWildcard", QueryParserSettings.DEFAULT_ALLOW_LEADING_WILDCARD);
4451
}
4552

4653
@Override public String[] names() {
@@ -56,6 +63,9 @@ public class FieldQueryParser implements QueryParser {
5663

5764
QueryParserSettings qpSettings = new QueryParserSettings();
5865
qpSettings.defaultField(fieldName);
66+
qpSettings.analyzeWildcard(defaultAnalyzeWildcard);
67+
qpSettings.allowLeadingWildcard(defaultAllowLeadingWildcard);
68+
5969
token = parser.nextToken();
6070
if (token == XContentParser.Token.START_OBJECT) {
6171
String currentFieldName = null;

modules/elasticsearch/src/main/java/org/elasticsearch/index/query/QueryStringQueryParser.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,14 @@
2222
import org.apache.lucene.queryParser.MapperQueryParser;
2323
import org.apache.lucene.queryParser.MultiFieldQueryParserSettings;
2424
import org.apache.lucene.queryParser.ParseException;
25+
import org.apache.lucene.queryParser.QueryParserSettings;
2526
import org.apache.lucene.search.BooleanQuery;
2627
import org.apache.lucene.search.Query;
2728
import org.elasticsearch.common.Strings;
2829
import org.elasticsearch.common.collect.Lists;
29-
import org.elasticsearch.common.inject.Inject;
3030
import org.elasticsearch.common.lucene.search.Queries;
3131
import org.elasticsearch.common.regex.Regex;
32+
import org.elasticsearch.common.settings.Settings;
3233
import org.elasticsearch.common.trove.impl.Constants;
3334
import org.elasticsearch.common.trove.map.hash.TObjectFloatHashMap;
3435
import org.elasticsearch.common.xcontent.XContentParser;
@@ -46,7 +47,12 @@ public class QueryStringQueryParser implements QueryParser {
4647

4748
public static final String NAME = "query_string";
4849

49-
@Inject public QueryStringQueryParser() {
50+
private final boolean defaultAnalyzeWildcard;
51+
private final boolean defaultAllowLeadingWildcard;
52+
53+
public QueryStringQueryParser(Settings settings) {
54+
this.defaultAnalyzeWildcard = settings.getAsBoolean("indices.query.query_string.analyze_wildcard", QueryParserSettings.DEFAULT_ANALYZE_WILDCARD);
55+
this.defaultAllowLeadingWildcard = settings.getAsBoolean("indices.query.query_string.allowLeadingWildcard", QueryParserSettings.DEFAULT_ALLOW_LEADING_WILDCARD);
5056
}
5157

5258
@Override public String[] names() {
@@ -58,6 +64,8 @@ public class QueryStringQueryParser implements QueryParser {
5864

5965
MultiFieldQueryParserSettings qpSettings = new MultiFieldQueryParserSettings();
6066
qpSettings.defaultField(AllFieldMapper.NAME);
67+
qpSettings.analyzeWildcard(defaultAnalyzeWildcard);
68+
qpSettings.allowLeadingWildcard(defaultAllowLeadingWildcard);
6169

6270
String currentFieldName = null;
6371
XContentParser.Token token;

modules/elasticsearch/src/main/java/org/elasticsearch/indices/query/IndicesQueriesRegistry.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,13 @@ public class IndicesQueriesRegistry {
4444
addQueryParser(queryParsers, new DisMaxQueryParser());
4545
addQueryParser(queryParsers, new IdsQueryParser());
4646
addQueryParser(queryParsers, new MatchAllQueryParser());
47-
addQueryParser(queryParsers, new QueryStringQueryParser());
47+
addQueryParser(queryParsers, new QueryStringQueryParser(settings));
4848
addQueryParser(queryParsers, new BoostingQueryParser());
4949
addQueryParser(queryParsers, new BoolQueryParser(settings));
5050
addQueryParser(queryParsers, new TermQueryParser());
5151
addQueryParser(queryParsers, new TermsQueryParser());
5252
addQueryParser(queryParsers, new FuzzyQueryParser());
53-
addQueryParser(queryParsers, new FieldQueryParser());
53+
addQueryParser(queryParsers, new FieldQueryParser(settings));
5454
addQueryParser(queryParsers, new RangeQueryParser());
5555
addQueryParser(queryParsers, new PrefixQueryParser());
5656
addQueryParser(queryParsers, new WildcardQueryParser());

0 commit comments

Comments
 (0)