Example usage for com.liferay.portal.kernel.search SearchContext getQueryConfig

List of usage examples for com.liferay.portal.kernel.search SearchContext getQueryConfig

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.search SearchContext getQueryConfig.

Prototype

public QueryConfig getQueryConfig() 

Source Link

Usage

From source file:com.liferay.document.library.repository.cmis.search.BaseCmisSearchQueryBuilder.java

License:Open Source License

@Override
public String buildQuery(SearchContext searchContext, Query query) throws SearchException {

    StringBundler sb = new StringBundler();

    sb.append("SELECT cmis:objectId");

    QueryConfig queryConfig = searchContext.getQueryConfig();

    if (queryConfig.isScoreEnabled()) {
        sb.append(", SCORE() AS HITS");
    }/*from w  w  w .  j  a  va2s.  c o m*/

    sb.append(" FROM cmis:document");

    CMISDisjunction cmisDisjunction = new CMISDisjunction();

    if (_log.isDebugEnabled()) {
        _log.debug("Repository query support " + queryConfig.getAttribute("capabilityQuery"));
    }

    if (!isSupportsOnlyFullText(queryConfig)) {
        traversePropertiesQuery(cmisDisjunction, query, queryConfig);
    }

    if (isSupportsFullText(queryConfig)) {
        CMISContainsExpression cmisContainsExpression = new CMISContainsExpression();

        traverseContentQuery(cmisContainsExpression, query, queryConfig);

        if (!cmisContainsExpression.isEmpty()) {
            cmisDisjunction.add(cmisContainsExpression);
        }
    }

    if (!cmisDisjunction.isEmpty()) {
        sb.append(" WHERE ");
        sb.append(cmisDisjunction.toQueryFragment());
    }

    Sort[] sorts = searchContext.getSorts();

    if (queryConfig.isScoreEnabled() || ArrayUtil.isNotEmpty(sorts)) {
        sb.append(" ORDER BY ");
    }

    if (ArrayUtil.isNotEmpty(sorts)) {
        int i = 0;

        for (Sort sort : sorts) {
            String fieldName = sort.getFieldName();

            if (!isSupportedField(fieldName)) {
                continue;
            }

            if (i > 0) {
                sb.append(", ");
            }

            sb.append(getCmisField(fieldName));

            if (sort.isReverse()) {
                sb.append(" DESC");
            } else {
                sb.append(" ASC");
            }

            i++;
        }
    } else if (queryConfig.isScoreEnabled()) {
        sb.append("HITS DESC");
    }

    if (_log.isDebugEnabled()) {
        _log.debug("CMIS query " + sb);
    }

    return sb.toString();
}

From source file:com.liferay.document.library.repository.cmis.search.BaseCmisSearchQueryBuilderTest.java

License:Open Source License

@Test
public void testContainsCombinedSupportedQuery() throws Exception {
    SearchContext searchContext = getSearchContext();

    searchContext.setKeywords("test");

    QueryConfig queryConfig = searchContext.getQueryConfig();

    queryConfig.setAttribute("capabilityQuery", CapabilityQuery.BOTHCOMBINED.value());

    String cmisQuery = buildQuery(searchContext);

    assertQueryEquals("((cmis:name = 'test' OR cmis:createdBy = 'test') OR " + "CONTAINS('test'))", cmisQuery);
}

From source file:com.liferay.document.library.repository.cmis.search.BaseCmisSearchQueryBuilderTest.java

License:Open Source License

@Test
public void testContainsCombinedSupportedWildcardQuery() throws Exception {
    SearchContext searchContext = getSearchContext();

    searchContext.setKeywords("test*.jpg");

    QueryConfig queryConfig = searchContext.getQueryConfig();

    queryConfig.setAttribute("capabilityQuery", CapabilityQuery.BOTHCOMBINED.value());

    String cmisQuery = buildQuery(searchContext);

    assertQueryEquals("((cmis:name LIKE 'test%.jpg' OR cmis:createdBy LIKE "
            + "'test%.jpg') OR CONTAINS('(test AND .jpg)'))", cmisQuery);
}

From source file:com.liferay.document.library.repository.cmis.search.BaseCmisSearchQueryBuilderTest.java

License:Open Source License

@Test
public void testContainsOnlySupportedQuery() throws Exception {
    SearchContext searchContext = getSearchContext();

    searchContext.setKeywords("test");

    QueryConfig queryConfig = searchContext.getQueryConfig();

    queryConfig.setAttribute("capabilityQuery", CapabilityQuery.FULLTEXTONLY.value());

    String cmisQuery = buildQuery(searchContext);

    assertQueryEquals("CONTAINS('test')", cmisQuery);
}

From source file:com.liferay.document.library.repository.cmis.search.BaseCmisSearchQueryBuilderTest.java

License:Open Source License

@Test
public void testContainsOnlySupportedQueryMultipleKeywords() throws Exception {

    SearchContext searchContext = getSearchContext();

    searchContext.setKeywords("test multiple");

    QueryConfig queryConfig = searchContext.getQueryConfig();

    queryConfig.setAttribute("capabilityQuery", CapabilityQuery.FULLTEXTONLY.value());

    String cmisQuery = buildQuery(searchContext);

    assertQueryEquals("CONTAINS('(test OR multiple)')", cmisQuery);
}

From source file:com.liferay.document.library.repository.cmis.search.BaseCmisSearchQueryBuilderTest.java

License:Open Source License

@Test
public void testContainsOnlySupportedQueryWithConjunction() throws Exception {

    SearchContext searchContext = getSearchContext();

    searchContext.setKeywords("+test +multiple");

    QueryConfig queryConfig = searchContext.getQueryConfig();

    queryConfig.setAttribute("capabilityQuery", CapabilityQuery.FULLTEXTONLY.value());

    String cmisQuery = buildQuery(searchContext);

    assertQueryEquals("CONTAINS('(test multiple)')", cmisQuery);
}

From source file:com.liferay.document.library.repository.cmis.search.BaseCmisSearchQueryBuilderTest.java

License:Open Source License

@Test
public void testContainsOnlySupportedQueryWithNegation() throws Exception {
    SearchContext searchContext = getSearchContext();

    searchContext.setKeywords("test -multiple");

    QueryConfig queryConfig = searchContext.getQueryConfig();

    queryConfig.setAttribute("capabilityQuery", CapabilityQuery.FULLTEXTONLY.value());

    String cmisQuery = buildQuery(searchContext);

    assertQueryEquals("CONTAINS('(-multiple OR test)')", cmisQuery);
}

From source file:com.liferay.document.library.repository.cmis.search.BaseCmisSearchQueryBuilderTest.java

License:Open Source License

@Test
public void testContainsOnlySupportedQueryWithNegationPhrase() throws Exception {

    SearchContext searchContext = getSearchContext();

    searchContext.setKeywords("test -\"multiple words\"");

    QueryConfig queryConfig = searchContext.getQueryConfig();

    queryConfig.setAttribute("capabilityQuery", CapabilityQuery.FULLTEXTONLY.value());

    String cmisQuery = buildQuery(searchContext);

    assertQueryEquals("CONTAINS('(-\\'multiple words\\' OR test)')", cmisQuery);
}

From source file:com.liferay.document.library.repository.cmis.search.BaseCmisSearchQueryBuilderTest.java

License:Open Source License

@Test
public void testContainsOnlySupportedWithApostrophe() throws Exception {
    SearchContext searchContext = getSearchContext();

    searchContext.setKeywords("test's");

    QueryConfig queryConfig = searchContext.getQueryConfig();

    queryConfig.setAttribute("capabilityQuery", CapabilityQuery.FULLTEXTONLY.value());

    String cmisQuery = buildQuery(searchContext);

    assertQueryEquals("CONTAINS('test\\'s')", cmisQuery);
}

From source file:com.liferay.document.library.repository.cmis.search.BaseCmisSearchQueryBuilderTest.java

License:Open Source License

protected String buildFolderQuery(boolean searchSubfolders) throws Exception {

    SearchContext searchContext = getSearchContext();

    searchContext.setFolderIds(new long[] { _DL_FOLDER_ID });
    searchContext.setKeywords("test");

    QueryConfig queryConfig = searchContext.getQueryConfig();

    queryConfig.setAttribute("capabilityQuery", CapabilityQuery.BOTHCOMBINED.value());
    queryConfig.setSearchSubfolders(searchSubfolders);

    return buildQuery(searchContext);
}