private AbstractSearchCriterion createBooleanCriterion(final List<SearchCriterionProto> list) { BooleanCriterion booleanCriterion = new BooleanCriterion(); for (SearchCriterionProto searchCriterionProto : list) { SearchCriterion criterion = convertFrom(searchCriterionProto); booleanCriterion.addCriterion(criterion); } return booleanCriterion; }
private BooleanCriterion disjunction(String query, String... fieldNames) { BooleanCriterion result = new BooleanCriterion(); for (String fName : fieldNames) { result.addCriterion(fieldCriterion(fName, query), SearchOperator.OR); } return result; }
private SearchCriterion domainQueryBuilder(Set<String> emailDomains) { if (emailDomains.size() == 1) { return new FieldCriterion(PeopleIndexFieldConstants.FIELD_EMAIL_DOMAIN, emailDomains.iterator().next()); } else { BooleanCriterion crit = new BooleanCriterion(); crit.setOperator(SearchOperator.OR); for (String domain : emailDomains) { crit.addCriterion(new FieldCriterion(PeopleIndexFieldConstants.FIELD_EMAIL_DOMAIN, domain)); } return crit; } }
protected void addFieldCriterionsDisjunction(List<FieldQuery> fieldQueries) { BooleanCriterion disjunctionCriterion = new BooleanCriterion(); for (FieldQuery fieldQuery : fieldQueries) { if(StringUtils.isNotBlank(fieldQuery.getQuery())) { disjunctionCriterion.addCriterion(fieldCriterion(fieldQuery.getFieldName(), fieldQuery.getQuery().trim()), SearchOperator.OR); } } criteria.add(disjunctionCriterion); }
public SearchCriterion transformConditionsListToSearchCriterion(List<FieldCondition> conditions, SearchOperator mainOperator) { BooleanCriterion bc = new BooleanCriterion(); bc.setOperator(SearchOperator.AND); for (FieldCondition condition : conditions) { if (condition instanceof AdvancedFieldCondition) { bc.addCriterion(advancedFieldConditionToBooleanCriterion((AdvancedFieldCondition)condition, mainOperator)); } else { bc.addCriterion(fieldConditionToFieldCriterion(condition, mainOperator)); } } if (bc.getCriteria().size() == 1) { return bc.getCriteria().get(0); } return bc; }
public BooleanCriterion fieldConditionsListToBooleanCriterion(List<FieldCondition> conditions, SearchOperator operator) { BooleanCriterion bc = new BooleanCriterion(); bc.setOperator(operator); for (FieldCondition condition : conditions) { SearchCriterion criterion = fieldConditionToFieldCriterion(condition, operator); if (criterion != null) { bc.addCriterion(criterion); } } return bc; }
@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 transformRequestToSearchCriterion(AdvancedSearchRequest request) { SearchOperator mainOperator = getSearchOperator(request.getExpressionsOperator()); BooleanCriterion bc = new BooleanCriterion(); bc.setOperator(SearchOperator.AND); for (Map.Entry<String, AdvancedFieldCondition> conditionEntry : request.getFieldsHierarchy().entrySet()) { if (conditionEntry.getValue().getConditionType().equals(AdvancedFieldConditionType.NORMAL)) { bc.addCriterion(advancedFieldConditionToBooleanCriterion(conditionEntry.getValue(), mainOperator)); } } if (bc.getCriteria().size() == 1) { return bc.getCriteria().get(0); } return bc; }
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; }
protected SearchCriterion buildAuthorYearCriterion(PublicationMetadata template) { if (template.getYear() == null || template.getAuthors() == null || template.getAuthors().isEmpty()) return null; BooleanCriterion criterion = new BooleanCriterion(); criterion.setOperator(SearchOperator.AND); criterion.addCriterion(new FieldCriterion(MetadataIndexConstants.F_YEAR, template.getYear())); for (PublicationAuthor author : template.getAuthors()) if (author.getSurname() != null) { criterion.addCriterion(new FieldCriterion(MetadataIndexConstants.F_AUTHOR_SURNAME, author.getSurname())); } return criterion; }
protected SearchCriterion buildAuthorJournalCriterion(PublicationMetadata template) { if (template.getYear() == null || template.getJournal() == null || template.getAuthors() == null || template.getAuthors().isEmpty()) return null; BooleanCriterion criterion = new BooleanCriterion(); criterion.setOperator(SearchOperator.AND); criterion.addCriterion(new FieldCriterion(MetadataIndexConstants.F_YEAR, template.getYear())); criterion.addCriterion(new FieldCriterion(MetadataIndexConstants.F_JOURNAL_HASH, abbreviationDirectory.toAcronym(template.getJournal()))); for (PublicationAuthor author : template.getAuthors()) if (author.getSurname() != null) { criterion.addCriterion(new FieldCriterion(MetadataIndexConstants.F_AUTHOR_SURNAME, author.getSurname())); } return criterion; }
@Override protected SearchCriterion fieldRangeCriterionHandler(FieldRangeCriterion criterion, SearchScheme scheme, SearchCriterionTransformerHint hint) { List<String> fieldNames = getLanguageFieldName(scheme, criterion.getField()); if(fieldNames.size()>1) { BooleanCriterion result = new BooleanCriterion(); for(String fieldName:fieldNames) { FieldRangeCriterion fieldCriterion = new FieldRangeCriterion(fieldName, criterion.getFrom(), criterion.getTo(), criterion.isInclusive()); result.addCriterion(fieldCriterion, SearchOperator.OR); } return result; }else { String fieldName = fieldNames.get(0); criterion.setField(fieldName); hint.getFieldsUsed().add(fieldName); 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; } }
bc.addCriterion(result); SearchCriterion criterion = fieldConditionToFieldCriterion(condition, operator); if (criterion != null) { bc.addCriterion(criterion);
public List<PublicationMetadata> matchIds(PublicationMetadata template) { List<PublicationId> ids = template.getIds(); if (ids == null) { ids = Collections.emptyList(); } if (ids.isEmpty()) return Collections.emptyList(); ResultsFormat format = new ResultsFormat(new FieldRequest[] { new FieldRequest(MetadataIndexConstants.F_AUTHOR_NORM), new FieldRequest(MetadataIndexConstants.F_JOURNAL_TITLE), new FieldRequest(MetadataIndexConstants.F_NUMBER), new FieldRequest(MetadataIndexConstants.F_PAGE_FROM), new FieldRequest(MetadataIndexConstants.F_TITLE), new FieldRequest(MetadataIndexConstants.F_VOLUME), new FieldRequest(MetadataIndexConstants.F_YEAR) }); Set<PublicationMetadata> hits = new HashSet<PublicationMetadata>(); BooleanCriterion criterion = new BooleanCriterion(); criterion.setOperator(SearchOperator.OR); for (PublicationId id : ids) { criterion.addCriterion(new FieldCriterion(MetadataIndexConstants.F_IDENTIFIER, idToString(id)), SearchOperator.OR); } FulltextSearchQuery query = new FulltextSearchQuery(0, 100, format, criterion); FulltextSearchResults ci = fulltextIndex.performSearch(query); for (FulltextSearchResult result : ci.getResults()) { PublicationMetadata metadata = documentBuilder.restore(result); hits.add(metadata); } return new ArrayList<PublicationMetadata>(hits); }