field.field(), field.field() + "." + IndexField.SEARCH_PARTIAL_SUFFIX)
.operator(MatchQueryBuilder.Operator.AND)
.boost(boost);
+ }
+ private QueryBuilder termAnyQuery(IndexField field, String query, float boost) {
+ return QueryBuilders.multiMatchQuery(query,
+ field.field(), field.field() + "." + IndexField.SEARCH_PARTIAL_SUFFIX)
+ .operator(MatchQueryBuilder.Operator.OR)
+ .boost(boost);
}
/* Build main query (search based) */
qb.should(this.termQuery(RuleNormalizer.RuleField.KEY, queryString, 15f));
qb.should(this.termQuery(RuleNormalizer.RuleField.LANGUAGE, queryString, 3f));
qb.should(this.termQuery(RuleNormalizer.RuleField.CHARACTERISTIC, queryString, 5f));
+ qb.should(this.termAnyQuery(RuleNormalizer.RuleField.CHARACTERISTIC, queryString, 1f));
qb.should(this.termQuery(RuleNormalizer.RuleField.SUB_CHARACTERISTIC, queryString, 5f));
+ qb.should(this.termAnyQuery(RuleNormalizer.RuleField.SUB_CHARACTERISTIC, queryString, 1f));
qb.should(this.termQuery(RuleNormalizer.RuleField._TAGS, queryString, 10f));
+ qb.should(this.termAnyQuery(RuleNormalizer.RuleField._TAGS, queryString, 1f));
return qb;
mapping.put("fields", mapMultiField(field));
} else {
mapping.put("type", "string");
- mapping.put("index", "not_analyzed");
+ mapping.put("index", "analyzed");
+ mapping.put("index_analyzer", "keyword");
+ mapping.put("search_analyzer", "whitespace");
}
return mapping;
}