List of usage examples for com.liferay.portal.kernel.search BooleanClause getBooleanClauseOccur
public BooleanClauseOccur getBooleanClauseOccur();
From source file:com.liferay.document.library.repository.cmis.search.BaseCmisSearchQueryBuilder.java
License:Open Source License
protected void traverseContentQuery(CMISJunction cmisJunction, Query query, QueryConfig queryConfig) throws SearchException { if (query instanceof BooleanQuery) { BooleanQuery booleanQuery = (BooleanQuery) query; List<BooleanClause<Query>> booleanClauses = booleanQuery.clauses(); CMISFullTextConjunction anyCMISConjunction = new CMISFullTextConjunction(); CMISDisjunction cmisDisjunction = new CMISDisjunction(); CMISFullTextConjunction notCMISConjunction = new CMISFullTextConjunction(); for (BooleanClause<Query> booleanClause : booleanClauses) { CMISJunction currentCMISJunction = cmisDisjunction; BooleanClauseOccur booleanClauseOccur = booleanClause.getBooleanClauseOccur(); if (booleanClauseOccur.equals(BooleanClauseOccur.MUST)) { currentCMISJunction = anyCMISConjunction; } else if (booleanClauseOccur.equals(BooleanClauseOccur.MUST_NOT)) { currentCMISJunction = notCMISConjunction; }/* ww w .jav a 2 s . co m*/ Query booleanClauseQuery = booleanClause.getClause(); traverseContentQuery(currentCMISJunction, booleanClauseQuery, queryConfig); } if (!anyCMISConjunction.isEmpty()) { cmisJunction.add(anyCMISConjunction); } if (!cmisDisjunction.isEmpty()) { cmisJunction.add(cmisDisjunction); } if (!notCMISConjunction.isEmpty()) { CMISContainsNotExpression cmisContainsNotExpression = new CMISContainsNotExpression( notCMISConjunction); cmisJunction.add(cmisContainsNotExpression); } } else if (query instanceof TermQuery) { TermQuery termQuery = (TermQuery) query; QueryTerm queryTerm = termQuery.getQueryTerm(); if (!_isContentFieldQueryTerm(queryTerm)) { return; } String field = queryTerm.getField(); String value = queryTerm.getValue(); value = CMISParameterValueUtil.formatParameterValue(field, value, false, queryConfig); CMISContainsValueExpression cmisContainsValueExpression = new CMISContainsValueExpression(value); cmisJunction.add(cmisContainsValueExpression); } else if (query instanceof WildcardQuery) { WildcardQuery wildcardQuery = (WildcardQuery) query; QueryTerm queryTerm = wildcardQuery.getQueryTerm(); if (!_isContentFieldQueryTerm(queryTerm)) { return; } String value = queryTerm.getValue(); String[] terms = value.split(_STAR_PATTERN); CMISConjunction cmisConjunction = new CMISConjunction(); for (String term : terms) { if (Validator.isNotNull(term)) { CMISContainsValueExpression containsValueExpression = new CMISContainsValueExpression(term); cmisConjunction.add(containsValueExpression); } } cmisJunction.add(cmisConjunction); } else if (query instanceof TermRangeQuery) { return; } }
From source file:com.liferay.document.library.repository.cmis.search.BaseCmisSearchQueryBuilder.java
License:Open Source License
protected void traversePropertiesQuery(CMISJunction cmisJunction, Query query, QueryConfig queryConfig) throws SearchException { if (query instanceof BooleanQuery) { BooleanQuery booleanQuery = (BooleanQuery) query; List<BooleanClause<Query>> booleanClauses = booleanQuery.clauses(); CMISConjunction anyCMISConjunction = new CMISConjunction(); CMISDisjunction cmisDisjunction = new CMISDisjunction(); CMISConjunction notCMISConjunction = new CMISConjunction(); for (BooleanClause<Query> booleanClause : booleanClauses) { CMISJunction currentCMISJunction = cmisDisjunction; BooleanClauseOccur booleanClauseOccur = booleanClause.getBooleanClauseOccur(); if (booleanClauseOccur.equals(BooleanClauseOccur.MUST)) { currentCMISJunction = anyCMISConjunction; } else if (booleanClauseOccur.equals(BooleanClauseOccur.MUST_NOT)) { currentCMISJunction = notCMISConjunction; }/*from w w w.ja v a 2s . co m*/ Query booleanClauseQuery = booleanClause.getClause(); traversePropertiesQuery(currentCMISJunction, booleanClauseQuery, queryConfig); } if (!anyCMISConjunction.isEmpty()) { cmisJunction.add(anyCMISConjunction); } if (!cmisDisjunction.isEmpty()) { cmisJunction.add(cmisDisjunction); } if (!notCMISConjunction.isEmpty()) { cmisJunction.add(new CMISNotExpression(notCMISConjunction)); } } else if (query instanceof MatchQuery) { MatchQuery matchQuery = (MatchQuery) query; if (!isSupportedField(matchQuery.getField())) { return; } CMISCriterion cmisCriterion = buildFieldExpression(matchQuery.getField(), matchQuery.getValue(), CMISSimpleExpressionOperator.EQ, queryConfig); if (cmisCriterion != null) { cmisJunction.add(cmisCriterion); } } else if (query instanceof TermQuery) { TermQuery termQuery = (TermQuery) query; QueryTerm queryTerm = termQuery.getQueryTerm(); if (!isSupportedField(queryTerm.getField())) { return; } CMISCriterion cmisCriterion = buildFieldExpression(queryTerm.getField(), queryTerm.getValue(), CMISSimpleExpressionOperator.EQ, queryConfig); if (cmisCriterion != null) { cmisJunction.add(cmisCriterion); } } else if (query instanceof TermRangeQuery) { TermRangeQuery termRangeQuery = (TermRangeQuery) query; if (!isSupportedField(termRangeQuery.getField())) { return; } String fieldName = termRangeQuery.getField(); String cmisField = getCmisField(fieldName); String cmisLowerTerm = CMISParameterValueUtil.formatParameterValue(fieldName, termRangeQuery.getLowerTerm(), false, queryConfig); String cmisUpperTerm = CMISParameterValueUtil.formatParameterValue(fieldName, termRangeQuery.getUpperTerm(), false, queryConfig); CMISCriterion cmisCriterion = new CMISBetweenExpression(cmisField, cmisLowerTerm, cmisUpperTerm, termRangeQuery.includesLower(), termRangeQuery.includesUpper()); cmisJunction.add(cmisCriterion); } else if (query instanceof WildcardQuery) { WildcardQuery wildcardQuery = (WildcardQuery) query; QueryTerm queryTerm = wildcardQuery.getQueryTerm(); if (!isSupportedField(queryTerm.getField())) { return; } CMISCriterion cmisCriterion = buildFieldExpression(queryTerm.getField(), queryTerm.getValue(), CMISSimpleExpressionOperator.LIKE, queryConfig); if (cmisCriterion != null) { cmisJunction.add(cmisCriterion); } } }
From source file:com.liferay.document.library.repository.search.internal.RepositorySearchQueryBuilderImpl.java
License:Open Source License
@Override public BooleanQuery getFullQuery(SearchContext searchContext) throws SearchException { try {/* ww w . j av a 2 s .c o m*/ BooleanQuery contextQuery = new BooleanQueryImpl(); addContext(contextQuery, searchContext); BooleanQuery searchQuery = new BooleanQueryImpl(); addSearchKeywords(searchQuery, searchContext); BooleanQuery fullQuery = new BooleanQueryImpl(); if (contextQuery.hasClauses()) { fullQuery.add(contextQuery, BooleanClauseOccur.MUST); } if (searchQuery.hasClauses()) { fullQuery.add(searchQuery, BooleanClauseOccur.MUST); } BooleanClause<Query>[] booleanClauses = searchContext.getBooleanClauses(); if (booleanClauses != null) { for (BooleanClause<Query> booleanClause : booleanClauses) { fullQuery.add(booleanClause.getClause(), booleanClause.getBooleanClauseOccur()); } } fullQuery.setQueryConfig(searchContext.getQueryConfig()); return fullQuery; } catch (Exception e) { throw new SearchException(e); } }