List of usage examples for com.liferay.portal.kernel.search QueryTerm getField
public String getField();
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; }/*from w w w . j a va2 s. c om*/ 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 .j a v a2 s. c o 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.cmis.search.BaseCmisSearchQueryBuilder.java
License:Open Source License
private boolean _isContentFieldQueryTerm(QueryTerm queryTerm) { String fieldName = queryTerm.getField(); return fieldName.equals(Field.CONTENT); }
From source file:com.liferay.document.library.repository.search.internal.RepositorySearchQueryBuilderImpl.java
License:Open Source License
protected boolean contains(Query query1, Query query2) { if (query1 instanceof BooleanQuery) { BooleanQuery booleanQuery = (BooleanQuery) query1; for (BooleanClause<Query> booleanClause : booleanQuery.clauses()) { if (contains(booleanClause.getClause(), query2)) { return true; }//from w w w.jav a 2s. com } return false; } else if (query2 instanceof BooleanQuery) { BooleanQuery booleanQuery = (BooleanQuery) query2; for (BooleanClause<Query> booleanClause : booleanQuery.clauses()) { if (contains(query1, booleanClause.getClause())) { return true; } } return false; } else if ((query1 instanceof TermQuery) && (query2 instanceof TermQuery)) { TermQuery termQuery1 = (TermQuery) query1; QueryTerm queryTerm1 = termQuery1.getQueryTerm(); String field1 = queryTerm1.getField(); String value1 = queryTerm1.getValue(); TermQuery termQuery2 = (TermQuery) query2; QueryTerm queryTerm2 = termQuery2.getQueryTerm(); String field2 = queryTerm2.getField(); String value2 = queryTerm2.getValue(); if (field1.equals(field2) && value1.equals(value2)) { return true; } } else if ((query1 instanceof TermRangeQuery) && (query2 instanceof TermRangeQuery)) { TermRangeQuery termRangeQuery1 = (TermRangeQuery) query1; boolean includesLower1 = termRangeQuery1.includesLower(); boolean includesUpper1 = termRangeQuery1.includesUpper(); String lowerTerm1 = termRangeQuery1.getLowerTerm(); String upperTerm1 = termRangeQuery1.getUpperTerm(); TermRangeQuery termRangeQuery2 = (TermRangeQuery) query2; boolean includesLower2 = termRangeQuery2.includesLower(); boolean includesUpper2 = termRangeQuery2.includesUpper(); String lowerTerm2 = termRangeQuery2.getLowerTerm(); String upperTerm2 = termRangeQuery2.getUpperTerm(); if ((includesLower1 == includesLower2) && (includesUpper1 == includesUpper2) && lowerTerm1.equals(lowerTerm2) && upperTerm1.equals(upperTerm2)) { return true; } } else if ((query1 instanceof WildcardQuery) && (query2 instanceof WildcardQuery)) { WildcardQuery wildcardQuery1 = (WildcardQuery) query1; QueryTerm queryTerm1 = wildcardQuery1.getQueryTerm(); String field1 = queryTerm1.getField(); String value1 = queryTerm1.getValue(); WildcardQuery wildcardQuery2 = (WildcardQuery) query2; QueryTerm queryTerm2 = wildcardQuery2.getQueryTerm(); String field2 = queryTerm2.getField(); String value2 = queryTerm2.getValue(); if (field1.equals(field2) && value1.equals(value2)) { return true; } } return false; }