@Override public SearchCriterion transformFieldCriterion(FieldCriterion criterion, SearchCriterionTransformerHint hint) { for (Entry<String, List<String>> entry : transform.entrySet()) { if (entry.getKey().equals(criterion.getValue().toLowerCase())) { if (entry.getValue().size() > 1 && hint.isExpandFieldValues()) { BooleanCriterion result = new BooleanCriterion(); for (String fieldName : entry.getValue()) { FieldCriterion fieldCriterion = new FieldCriterion(criterion.getField(), fieldName, criterion.isParseFlag()); result.addCriterion(fieldCriterion, SearchOperator.OR); } result.setOperator(criterion.getOperator()); return result; } else { criterion.setValue(entry.getValue().get(0)); } } } return criterion; }
@Override protected SearchCriterion fieldCriterionHandler(FieldCriterion criterion, SearchScheme scheme, SearchCriterionTransformerHint hint) { List<String> fieldNames = getLanguageFieldName(scheme, criterion.getField()); if (fieldNames.size() > 1 && hint.isExpandFieldValues()) { BooleanCriterion result = new BooleanCriterion(); result.setOperator(SearchOperator.OR); for(String fieldName:fieldNames) { FieldCriterion fieldCriterion = new FieldCriterion(fieldName, criterion.getValue(), criterion.isParseFlag()); result.addCriterion(fieldCriterion, SearchOperator.OR); } return result; }else { String fieldName = fieldNames.get(0); criterion.setField(fieldName); hint.getFieldsUsed().add(fieldName); return criterion; } }
final Metadata metadata = schema.getMetadata(name); final Long span = metadata != null ? metadata.getNumberValue(Property.SPAN) : null; final boolean allowLuceneSyntax = criterion.isParseFlag();