private FieldCriterion fieldCriterion(String fieldName, String query) { return new FieldCriterion(fieldName, query.trim(), false); }
@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; }
public SearchCriterion transformFieldCriterion(FieldCriterion criterion, SearchCriterionTransformerHint hint) { if (POSITIVE_VALUES.contains(criterion.getValue().toLowerCase())) { criterion.setValue(TARGET_POSITIVE_VALUE); } else if (NEGATIVE_VALUES.contains(criterion.getValue().toLowerCase())) { criterion.setValue(TARGET_NEGATIVE_VALUE); } return criterion; }
@Override protected FieldCriterion mergeConditions(List<FieldCriterion> criterions) { if (CollectionUtils.isEmpty(criterions)) { return null; } StringBuilder builder = new StringBuilder(); for (FieldCriterion criterion : criterions) { builder.append(criterion.getValue()); builder.append(" "); } return new FieldCriterion(criterions.get(0).getField(), builder.toString().trim(), criterions.get(0).getOperator()); }
private BooleanCriterion expandMultipleField(FieldCriterion criterion, Set<String> multipleExpandFieldNames) { BooleanCriterion fieldCriterion = new BooleanCriterion(); String value = criterion.getValue(); for (String field : multipleExpandFieldNames) { fieldCriterion.addCriterion(new FieldCriterion(field, value), (criterion.getOperator() == SearchOperator.NOT) ? SearchOperator.NOT :SearchOperator.OR); } return fieldCriterion; }
@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; } }
FieldCriterion fieldCriterion = new FieldCriterion(); fieldCriterion.setParserOperator(transformOpertor(fieldCriteriaProto.getParserOperator())); searchCriterion = fieldCriterion;
public SearchCriterion transformFieldCriterion(FieldCriterion criterion, SearchCriterionTransformerHint hint) { String dateString = criterion.getValue(); FieldRangeCriterion dateRangeCriterion = new FieldRangeCriterion(criterion.getField()); dateRangeCriterion.setOperator(criterion.getOperator()); dateRangeCriterion.setFrom(appendMissingDateFormat(dateString, false)); dateRangeCriterion.setTo(appendMissingDateFormat(dateString, true)); return dateRangeCriterion; }
final String value = criterion.getValue(); final boolean isExactSearch = criterion.getField().startsWith(SolrConstant.FIELD_EXACTSEARCH_PREFIX); final String name = isExactSearch?criterion.getField().substring(SolrConstant.FIELD_EXACTSEARCH_PREFIX.length()):criterion.getField(); final Metadata metadata = schema.getMetadata(name); final Long span = metadata != null ? metadata.getNumberValue(Property.SPAN) : null; final boolean allowLuceneSyntax = criterion.isParseFlag();
@Override protected SearchCriterion fieldCriterionHandler(FieldCriterion criterion, SearchScheme scheme, SearchCriterionTransformerHint hint) { if (!isFieldUsageAllowed(criterion.getField(), scheme)) { hint.addError(new SearchCriterionError(FieldErrorType.INVALID_FIELD, new Object[] { criterion.getField() })); return new BooleanCriterion(); } if (StringUtils.isBlank(criterion.getValue())) { hint.addError(new SearchCriterionError(FieldErrorType.EMPTY_VALUE, null)); return new BooleanCriterion(); } if (criterion.getValue().length() > CRITERION_VALUE_MAX_LENGTH) { hint.addError(new SearchCriterionError(FieldErrorType.TO_LONG_VALUE, new Object[] { CRITERION_VALUE_MAX_LENGTH })); return new BooleanCriterion(); } SearchCriterionTypeValidator additionalValidator = getValidator(criterion.getField(), scheme); if (additionalValidator != null && !additionalValidator.validateFieldCriterion(criterion, hint)) { return new BooleanCriterion(); } return criterion; }
private static String fieldQueryDefault(final String value, final FieldCriterion criterion, final boolean allowLuceneSyntax) { String formattedValue = value; if (allowLuceneSyntax) { formattedValue = Formatter.escapeSpecialSymbolsExceptWildcards(formattedValue); } else { formattedValue = Formatter.escapeSpecialSymbols(formattedValue); } if (SearchOperator.AND.equals(criterion.getParserOperator())) { formattedValue = Formatter.forceMustOperator(formattedValue); } return createFieldQuery(criterion.getField(), formattedValue); }
@Override protected void addToMergeList(Map<String, List<FieldCriterion>> criterionsToMerge, FieldCriterion criterionToMerge) { if (!criterionsToMerge.containsKey(criterionToMerge.getField())) { criterionsToMerge.put(criterionToMerge.getField(), new LinkedList<FieldCriterion>()); } criterionsToMerge.get(criterionToMerge.getField()).add(criterionToMerge); }
if (subcriterion instanceof FieldCriterion) { FieldCriterion fieldSubcriterion = (FieldCriterion)subcriterion; if (scheme.getMultipleFields().containsKey(fieldSubcriterion.getField())) { FieldCriterion multipleField = (FieldCriterion)subcriterion; BooleanCriterion expandedCondition = expandMultipleField(fieldCriterion, scheme.getMultipleFields().get(fieldCriterion.getField())); if (fieldCriterion.getOperator() == SearchOperator.NOT) { for (SearchCriterion singleExpandedCondition : expandedCondition.getCriteria()) { criterion.getCriteria().add(singleExpandedCondition); if (fieldCriterion.getOperator() == SearchOperator.OR) { expandedCondition.setOperator(SearchOperator.OR);
@Override public boolean validateFieldCriterion(FieldCriterion criterion, SearchCriterionTransformerHint hint) { String val = criterion.getValue().toLowerCase(); if (POSITIVE_VALUES.contains(val) || NEGATIVE_VALUES.contains(val)) { return true; } hint.addError(new SearchCriterionError(FieldErrorType.INVALID_CONTENT_AVAILABILITY_FORMAT, null)); return false; }
public void translateSearchCriterionToFormField(SearchCriterion criterion, List<AdvancedFormFieldCondition> advancedForm, BooleanCriterion parent, SearchScheme scheme) { if (criterion instanceof BooleanCriterion) { BooleanCriterion bc = (BooleanCriterion)criterion; boolean firstChild = true; for (SearchCriterion subcriterion : bc.getCriteria()) { translateSearchCriterionToFormField(subcriterion, advancedForm, bc, scheme); if (firstChild && parent != null && bc.getOperator() == SearchOperator.OR) { advancedForm.get(advancedForm.size()-1).setOperator(AdvancedFormFieldCondition.OR_OPERATOR); } else if (firstChild && parent != null) { advancedForm.get(advancedForm.size()-1).setOperator(AdvancedFormFieldCondition.AND_OPERATOR); } firstChild = false; } } else if (criterion instanceof FieldCriterion) { FieldCriterion fieldCriterion = (FieldCriterion)criterion; String presentationFieldName = getPresentationFieldName(scheme, fieldCriterion.getField()); advancedForm.add(new AdvancedFormFieldCondition(translateSearchOperator(fieldCriterion.getOperator(), parent), presentationFieldName, fieldCriterion.getValue())); } else if (criterion instanceof FieldRangeCriterion) { FieldRangeCriterion fieldRangeCriterion = (FieldRangeCriterion)criterion; String presentationFieldName = getPresentationFieldName(scheme, fieldRangeCriterion.getField()); advancedForm.add(new AdvancedFormFieldCondition(translateSearchOperator(fieldRangeCriterion.getOperator(), parent), presentationFieldName, new String[] {fieldRangeCriterion.getFrom(), fieldRangeCriterion.getTo()})); } }
private static String fieldQueryTokenized(final FieldCriterion criterion, final String value, final boolean allowLuceneSyntax) { boolean usesLuceneOperators = false; String formattedValue = value; if (allowLuceneSyntax) { usesLuceneOperators = Formatter.containsSignificantLuceneSyntax(formattedValue); formattedValue = Formatter.escapeSpecialSymbolsExceptWildcardsAndOperators(formattedValue); } else { formattedValue = Formatter.escapeSpecialSymbols(formattedValue); } formattedValue = StringUtils.trimWhitespace(formattedValue); if (!usesLuceneOperators && SearchOperator.AND.equals(criterion.getParserOperator())) { formattedValue = Formatter.forceMustOperator(formattedValue); } return createFieldQuery(criterion.getField(), formattedValue); }
@Override protected SearchCriterion fieldCriterionHandler(FieldCriterion criterion, SearchScheme scheme, SearchCriterionTransformerHint hint) { if (scheme.getSpecialFieldTypes().containsKey(criterion.getField())) { String specialFieldType = scheme.getSpecialFieldTypes().get(criterion.getField()); if (specialFieldsTransformers.containsKey(specialFieldType)) { return specialFieldsTransformers.get(specialFieldType).transformFieldCriterion(criterion, hint); } } return criterion; }
@Override public boolean validateFieldCriterion(FieldCriterion criterion, SearchCriterionTransformerHint hint) { String val = criterion.getValue().toLowerCase(); for (Entry<String, List<String>> entry : transform.entrySet()) { if (entry.getKey().equals(val)) { return true; } } hint.addError(new SearchCriterionError(errorType, null)); return false; }