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

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

Introduction

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

Prototype

public Sort[] getSorts() 

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  ww .ja  va 2  s. 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.rivetlogic.portal.search.elasticsearch.util.ElasticsearchHelper.java

License:Open Source License

/**
 * Gets the search hits./*from   ww  w.  ja  va  2 s  .c o  m*/
 *
 * @param searchContext the search context
 * @param query the query
 * @return the search hits
 */
public Hits getSearchHits(SearchContext searchContext, Query query) {
    if (_log.isInfoEnabled()) {
        _log.info("Search against Elasticsearch with SearchContext");
    }
    Hits hits = new HitsImpl();
    hits.setStart(new Date().getTime());

    Client client = this._esConnector.getClient();

    String keywords = searchContext.getKeywords();
    SearchRequestBuilder searchRequestBuilder = client
            .prepareSearch(ElasticsearchIndexerConstants.ELASTIC_SEARCH_LIFERAY_INDEX)
            .setQuery(_esQueryBuilder.doSearch(query));

    // Handle Search Facet queries
    handleFacetQueries(searchContext, searchRequestBuilder);
    SearchResponse response = null;
    if (getSort(searchContext.getSorts()) != null) {
        searchRequestBuilder = searchRequestBuilder.setFrom(searchContext.getStart())
                .setSize(searchContext.getEnd()).addSort(getSort(searchContext.getSorts()));
    } else {
        searchRequestBuilder = searchRequestBuilder.setFrom(searchContext.getStart())
                .setSize(searchContext.getEnd());
    }
    response = searchRequestBuilder.execute().actionGet();
    collectFacetResults(searchContext, response);

    SearchHits searchHits = response.getHits();
    hits.setDocs(getDocuments(searchHits, searchContext));
    hits.setScores(getScores(searchHits));
    hits.setSearchTime((float) (System.currentTimeMillis() - hits.getStart()) / Time.SECOND);
    hits.setQuery(query);
    if (keywords != null) {
        hits.setQueryTerms(keywords.split(StringPool.SPACE));
    }
    hits.setLength((int) searchHits.getTotalHits());
    hits.setStart(hits.getStart());

    return hits;
}

From source file:com.rknowsys.portal.search.elastic.ElasticsearchIndexSearcher.java

License:Open Source License

private SearchRequestBuilder prepareSearchBuilder(SearchContext searchContext, Query query, Client client,
        int start, int end) {
    SearchRequestBuilder searchRequestBuilder = client.prepareSearch(Utilities.getIndexName(searchContext));
    addHighlights(query, searchRequestBuilder);
    //QueryBuilder queryBuilder = com.rknowsys.portal.search.elastic.liferay.QueryTranslatorUtil.translate(query);

    //if (queryBuilder == null) {
    String q = applyCustomESRules(query.toString());
    QueryBuilder queryBuilder = QueryBuilders.queryStringQuery(q);
    //}/*from   ww  w .ja  va 2  s. com*/

    searchRequestBuilder.setQuery(queryBuilder);

    _log.debug("Query String" + queryBuilder.toString());

    searchRequestBuilder.setTypes("documents");

    addFacetCollectorsToSearch(searchContext, searchRequestBuilder);

    addSortToSearch(searchContext.getSorts(), searchRequestBuilder);

    int size = end - start;

    _log.debug("Search Start:  " + start + " Search Size: " + size);
    if ((start != QueryUtil.ALL_POS) && (end != QueryUtil.ALL_POS)) {
        searchRequestBuilder.setFrom(start).setSize(size);
    }
    return searchRequestBuilder;
}

From source file:org.rsc.liferay.solr.SolrIndexSearcher.java

License:Open Source License

protected Hits doSearch(SearchContext searchContext, Query query) throws Exception {

    SolrQuery solrQuery = translateQuery(searchContext.getCompanyId(), query, searchContext.getSorts(),
            searchContext.getStart(), searchContext.getEnd());

    Map<String, Facet> facets = searchContext.getFacets();

    for (Facet facet : facets.values()) {
        if (facet.isStatic()) {
            continue;
        }// w  w  w .j a  va2 s . c o m

        FacetConfiguration facetConfiguration = facet.getFacetConfiguration();

        if (facet instanceof RangeFacet) {
            solrQuery.addFacetField(facetConfiguration.getFieldName());

            JSONObject dataJSONObject = facetConfiguration.getData();

            JSONArray rangesJSONArray = dataJSONObject.getJSONArray("ranges");

            if (rangesJSONArray == null) {
                continue;
            }

            for (int i = 0; i < rangesJSONArray.length(); i++) {
                JSONObject rangeJSONObject = rangesJSONArray.getJSONObject(i);

                String range = rangeJSONObject.getString("range");

                String facetQuery = facetConfiguration.getFieldName() + StringPool.COLON + range;

                solrQuery.addFacetQuery(facetQuery);
            }
        } else {
            solrQuery.addFacetField(facetConfiguration.getFieldName());
        }

        String facetSort = FacetParams.FACET_SORT_COUNT;

        String order = facetConfiguration.getOrder();

        if (order.equals("OrderValueAsc")) {
            facetSort = FacetParams.FACET_SORT_INDEX;
        }

        solrQuery.add("f." + facetConfiguration.getFieldName() + ".facet.sort", facetSort);
    }

    solrQuery.setFacetLimit(-1);

    QueryResponse queryResponse = _solrServer.query(solrQuery, METHOD.POST);

    boolean allResults = false;

    if (solrQuery.getRows() == 0) {
        allResults = true;
    }

    List<FacetField> facetFields = queryResponse.getFacetFields();

    if (facetFields != null) {
        for (FacetField facetField : facetFields) {
            Facet facet = facets.get(facetField.getName());

            FacetCollector facetCollector = null;

            if (facet instanceof RangeFacet) {
                facetCollector = new SolrFacetQueryCollector(facetField.getName(),
                        queryResponse.getFacetQuery());
            } else {
                facetCollector = new SolrFacetFieldCollector(facetField.getName(), facetField);
            }

            facet.setFacetCollector(facetCollector);
        }
    }

    return subset(solrQuery, query, query.getQueryConfig(), queryResponse, allResults);
}