suggest.should(QueryBuilders.fuzzyQuery(fieldName, q).fuzziness(Fuzziness.fromEdits(2))); suggest.should(QueryBuilders.moreLikeThisQuery(fieldName).like(q)); suggest.should(QueryBuilders.matchPhrasePrefixQuery(fieldName, q));
/** * <p> * fuzzy 查询 * </p > * @author tudou * @date 2018/8/14 10:37 * @param fieldName 字段名 * @param value 值 * @return com.easy.cloud.core.search.core.query.builder.EcQueryBuilder */ public EcQueryBuilder fuzzy(String fieldName, Object value) { Assert.isTrue(EcStringUtils.isEmpty(fieldName), "fieldName is null or \"\""); if (value != null && !"".equals(value)) { list.add(QueryBuilders.fuzzyQuery(fieldName, value)); } return this; } /**
@Override protected QueryBuilder buildQuery(MethodInvocation invocation, String fieldName, Map<String, String> extraParams) { String text = invocation.getParameterAsString(1); FuzzyQueryBuilder fuzzyQuery = QueryBuilders.fuzzyQuery(fieldName, text); setExtraMatchQueryParam(fuzzyQuery, extraParams); return fuzzyQuery; }
@Override public SpanQueryBuilder createSpanQuery() { return QueryBuilders.spanMultiTermQueryBuilder(QueryBuilders.fuzzyQuery(field, value) .fuzziness(fuzziness) .boost(boost)); }
private static QueryBuilder getTextFilter(String key, Object value, Text.TextPredicate biPredicate) { String predicate = biPredicate.toString(); switch (predicate) { case "LIKE": return QueryBuilders.wildcardQuery(key, value.toString()); case "UNLIKE": return QueryBuilders.boolQuery().mustNot(QueryBuilders.wildcardQuery(key, value.toString())); case "PREFIX": return QueryBuilders.prefixQuery(key, value.toString()); case "UNPREFIX": return QueryBuilders.boolQuery().mustNot(QueryBuilders.prefixQuery(key, value.toString())); case "REGEXP": return QueryBuilders.regexpQuery(key, value.toString()); case "UNREGEXP": return QueryBuilders.boolQuery().mustNot(QueryBuilders.regexpQuery(key, value.toString())); case "FUZZY": return QueryBuilders.fuzzyQuery(key, value.toString()); case "UNFUZZY": return QueryBuilders.boolQuery().mustNot(QueryBuilders.fuzzyQuery(key, value.toString())); default: throw new IllegalArgumentException("predicate not supported in has step: " + predicate); } }
/** * Creates the query that is applied on the name field. * <p/> * @param searchTerm * @return */ private QueryBuilder getNameQuery(String searchTerm) { //prefix name match QueryBuilder namePrefixMatch = prefixQuery(Settings.META_NAME_FIELD, searchTerm); QueryBuilder namePhraseMatch = matchPhraseQuery(Settings.META_NAME_FIELD, searchTerm); QueryBuilder nameFuzzyQuery = fuzzyQuery( Settings.META_NAME_FIELD, searchTerm); QueryBuilder wildCardQuery = wildcardQuery(Settings.META_NAME_FIELD, String.format("*%s*", searchTerm)); QueryBuilder nameQuery = boolQuery() .should(namePrefixMatch) .should(namePhraseMatch) .should(nameFuzzyQuery) .should(wildCardQuery); return nameQuery; }
QueryBuilder descriptionFuzzyQuery = fuzzyQuery( Settings.META_DESCRIPTION_FIELD, searchTerm);
break; case "fuzzy": ret = QueryBuilders.fuzzyQuery(name, (String) value); break; case "wildcard":
query = rangeQuery(fieldName).from(ranges[0]).to(ranges[1]); break; case FUZZY: query = fuzzyQuery(fieldName, (String) value); break; case IN: query = boolQuery();
break; case FUZZY: query = fuzzyQuery(fieldName, searchText); break; case IN: