query parser with explicit fields values would not get analyzed
This commit is contained in:
parent
07d4166715
commit
54f325ee1a
|
@ -137,6 +137,8 @@ public interface FieldMapper<T> {
|
|||
*/
|
||||
String indexedValue(T value);
|
||||
|
||||
boolean useFieldQueryWithQueryString();
|
||||
|
||||
Query fieldQuery(String value);
|
||||
|
||||
Filter fieldFilter(String value);
|
||||
|
|
|
@ -291,6 +291,10 @@ public abstract class JsonFieldMapper<T> implements FieldMapper<T>, JsonMapper {
|
|||
return value.toString();
|
||||
}
|
||||
|
||||
@Override public boolean useFieldQueryWithQueryString() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override public Query fieldQuery(String value) {
|
||||
return new TermQuery(new Term(names.indexName(), indexedValue(value)));
|
||||
}
|
||||
|
|
|
@ -99,6 +99,13 @@ public abstract class JsonNumberFieldMapper<T extends Number> extends JsonFieldM
|
|||
return this.precisionStep;
|
||||
}
|
||||
|
||||
/**
|
||||
* Use the field query created here when matching on numbers.
|
||||
*/
|
||||
@Override public boolean useFieldQueryWithQueryString() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Override the default behavior (to return the string, and return the actual Number instance).
|
||||
*/
|
||||
|
|
|
@ -61,8 +61,14 @@ public class MapperQueryParser extends QueryParser {
|
|||
if (mapperService != null) {
|
||||
MapperService.SmartNameFieldMappers fieldMappers = mapperService.smartName(field);
|
||||
if (fieldMappers != null) {
|
||||
if (fieldMappers.fieldMappers().mapper() != null) {
|
||||
Query query = fieldMappers.fieldMappers().mapper().fieldQuery(queryText);
|
||||
FieldMapper mapper = fieldMappers.fieldMappers().mapper();
|
||||
if (mapper != null) {
|
||||
Query query;
|
||||
if (mapper.useFieldQueryWithQueryString()) {
|
||||
query = fieldMappers.fieldMappers().mapper().fieldQuery(queryText);
|
||||
} else {
|
||||
query = super.getFieldQuery(mapper.names().indexName(), queryText);
|
||||
}
|
||||
return wrapSmartNameQuery(query, fieldMappers, filterCache);
|
||||
}
|
||||
}
|
||||
|
@ -80,7 +86,7 @@ public class MapperQueryParser extends QueryParser {
|
|||
}
|
||||
}
|
||||
}
|
||||
return super.getRangeQuery(field, part1, part2, inclusive);
|
||||
return newRangeQuery(field, part1, part2, inclusive);
|
||||
}
|
||||
|
||||
@Override protected Query getPrefixQuery(String field, String termStr) throws ParseException {
|
||||
|
|
Loading…
Reference in New Issue