|
@@ -129,6 +129,8 @@ public class SimpleQueryStringBuilder extends AbstractQueryBuilder<SimpleQuerySt
|
|
|
private int flags = DEFAULT_FLAGS;
|
|
|
/** Flag specifying whether query should be forced to expand to all searchable fields */
|
|
|
private Boolean useAllFields;
|
|
|
+ /** Whether or not the lenient flag has been set or not */
|
|
|
+ private boolean lenientSet = false;
|
|
|
|
|
|
/** Further search settings needed by the ES specific query string parser only. */
|
|
|
private Settings settings = new Settings();
|
|
@@ -162,6 +164,9 @@ public class SimpleQueryStringBuilder extends AbstractQueryBuilder<SimpleQuerySt
|
|
|
in.readBoolean(); // lowercase_expanded_terms
|
|
|
}
|
|
|
settings.lenient(in.readBoolean());
|
|
|
+ if (in.getVersion().onOrAfter(V_5_1_0_UNRELEASED)) {
|
|
|
+ this.lenientSet = in.readBoolean();
|
|
|
+ }
|
|
|
settings.analyzeWildcard(in.readBoolean());
|
|
|
if (in.getVersion().before(V_5_1_0_UNRELEASED)) {
|
|
|
in.readString(); // locale
|
|
@@ -188,6 +193,9 @@ public class SimpleQueryStringBuilder extends AbstractQueryBuilder<SimpleQuerySt
|
|
|
out.writeBoolean(true); // lowercase_expanded_terms
|
|
|
}
|
|
|
out.writeBoolean(settings.lenient());
|
|
|
+ if (out.getVersion().onOrAfter(V_5_1_0_UNRELEASED)) {
|
|
|
+ out.writeBoolean(lenientSet);
|
|
|
+ }
|
|
|
out.writeBoolean(settings.analyzeWildcard());
|
|
|
if (out.getVersion().before(V_5_1_0_UNRELEASED)) {
|
|
|
out.writeString(Locale.ROOT.toLanguageTag()); // locale
|
|
@@ -315,6 +323,7 @@ public class SimpleQueryStringBuilder extends AbstractQueryBuilder<SimpleQuerySt
|
|
|
/** Specifies whether query parsing should be lenient. Defaults to false. */
|
|
|
public SimpleQueryStringBuilder lenient(boolean lenient) {
|
|
|
this.settings.lenient(lenient);
|
|
|
+ this.lenientSet = true;
|
|
|
return this;
|
|
|
}
|
|
|
|
|
@@ -372,7 +381,7 @@ public class SimpleQueryStringBuilder extends AbstractQueryBuilder<SimpleQuerySt
|
|
|
this.fieldsAndWeights.isEmpty())) {
|
|
|
resolvedFieldsAndWeights = QueryStringQueryBuilder.allQueryableDefaultFields(context);
|
|
|
// Need to use lenient mode when using "all-mode" so exceptions aren't thrown due to mismatched types
|
|
|
- newSettings.lenient(true);
|
|
|
+ newSettings.lenient(lenientSet ? settings.lenient() : true);
|
|
|
} else {
|
|
|
// Use the default field if no fields specified
|
|
|
if (fieldsAndWeights.isEmpty()) {
|
|
@@ -444,7 +453,9 @@ public class SimpleQueryStringBuilder extends AbstractQueryBuilder<SimpleQuerySt
|
|
|
|
|
|
builder.field(FLAGS_FIELD.getPreferredName(), flags);
|
|
|
builder.field(DEFAULT_OPERATOR_FIELD.getPreferredName(), defaultOperator.name().toLowerCase(Locale.ROOT));
|
|
|
- builder.field(LENIENT_FIELD.getPreferredName(), settings.lenient());
|
|
|
+ if (lenientSet) {
|
|
|
+ builder.field(LENIENT_FIELD.getPreferredName(), settings.lenient());
|
|
|
+ }
|
|
|
builder.field(ANALYZE_WILDCARD_FIELD.getPreferredName(), settings.analyzeWildcard());
|
|
|
if (settings.quoteFieldSuffix() != null) {
|
|
|
builder.field(QUOTE_FIELD_SUFFIX_FIELD.getPreferredName(), settings.quoteFieldSuffix());
|
|
@@ -473,7 +484,7 @@ public class SimpleQueryStringBuilder extends AbstractQueryBuilder<SimpleQuerySt
|
|
|
Operator defaultOperator = null;
|
|
|
String analyzerName = null;
|
|
|
int flags = SimpleQueryStringFlag.ALL.value();
|
|
|
- boolean lenient = SimpleQueryStringBuilder.DEFAULT_LENIENT;
|
|
|
+ Boolean lenient = null;
|
|
|
boolean analyzeWildcard = SimpleQueryStringBuilder.DEFAULT_ANALYZE_WILDCARD;
|
|
|
String quoteFieldSuffix = null;
|
|
|
Boolean useAllFields = null;
|
|
@@ -565,7 +576,10 @@ public class SimpleQueryStringBuilder extends AbstractQueryBuilder<SimpleQuerySt
|
|
|
SimpleQueryStringBuilder qb = new SimpleQueryStringBuilder(queryBody);
|
|
|
qb.boost(boost).fields(fieldsAndWeights).analyzer(analyzerName).queryName(queryName).minimumShouldMatch(minimumShouldMatch);
|
|
|
qb.flags(flags).defaultOperator(defaultOperator);
|
|
|
- qb.lenient(lenient).analyzeWildcard(analyzeWildcard).boost(boost).quoteFieldSuffix(quoteFieldSuffix);
|
|
|
+ if (lenient != null) {
|
|
|
+ qb.lenient(lenient);
|
|
|
+ }
|
|
|
+ qb.analyzeWildcard(analyzeWildcard).boost(boost).quoteFieldSuffix(quoteFieldSuffix);
|
|
|
qb.useAllFields(useAllFields);
|
|
|
return Optional.of(qb);
|
|
|
}
|