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

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

Introduction

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

Prototype

public QueryConfig getQueryConfig();

Source Link

Usage

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

License:Open Source License

private Hits doSearch(SearchContext searchContext, Query query, int start, int end) {
    Client client = getClient();//  w ww  . j a v  a2 s. c  om

    SearchRequestBuilder searchRequestBuilder = prepareSearchBuilder(searchContext, query, client, start, end);
    _log.debug("Current lucene version:  " + Version.LUCENE_CURRENT);
    _log.debug("Search query String  " + searchRequestBuilder.toString());
    SearchRequest searchRequest = searchRequestBuilder.request();
    _log.debug("Time Before request to ES: " + System.currentTimeMillis());
    ActionFuture<SearchResponse> future = client.search(searchRequest);
    SearchResponse searchResponse = future.actionGet();
    _log.debug("Time After response from ES: " + System.currentTimeMillis());
    updateFacetCollectors(searchContext, searchResponse);
    Hits hits = processSearchHits(searchResponse, query.getQueryConfig());
    _log.debug("Total responseCount  " + searchResponse.getHits().getTotalHits());
    _log.debug("Time After processSearchHits: " + System.currentTimeMillis());

    hits.setQuery(query);

    TimeValue timeValue = searchResponse.getTook();

    hits.setSearchTime((float) timeValue.getSecondsFrac());
    return hits;
}

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

License:Open Source License

private void addHighlights(Query query, SearchRequestBuilder searchRequestBuilder) {
    QueryConfig queryConfig = query.getQueryConfig();
    if (queryConfig.isHighlightEnabled()) {

        String localizedContentName = DocumentImpl.getLocalizedName(queryConfig.getLocale(), Field.CONTENT);

        String localizedTitleName = DocumentImpl.getLocalizedName(queryConfig.getLocale(), Field.TITLE);

        int fragmentSize = queryConfig.getHighlightFragmentSize();
        int numberOfFragments = queryConfig.getHighlightSnippetSize();
        searchRequestBuilder.addHighlightedField(Field.CONTENT, fragmentSize, numberOfFragments);
        searchRequestBuilder.addHighlightedField(Field.TITLE, fragmentSize, numberOfFragments);
        searchRequestBuilder.addHighlightedField(localizedContentName, fragmentSize, numberOfFragments);
        searchRequestBuilder.addHighlightedField(localizedTitleName, fragmentSize, numberOfFragments);

    }//from   w  ww. j  a  va 2 s  .c om
}

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

License:Open Source License

@Override
public Hits search(String searchEngineId, long companyId, Query query, Sort[] sort, int start, int end)
        throws SearchException {

    try {/*from  w  w w . j a va  2 s  . c  o  m*/
        Client client = getClient();
        SearchRequestBuilder searchRequestBuilder = client.prepareSearch(Utilities.getIndexName(companyId));
        String q = applyCustomESRules(query.toString());

        QueryBuilder queryBuilder = QueryBuilders.queryStringQuery(q);

        searchRequestBuilder.setQuery(queryBuilder);

        searchRequestBuilder.setTypes("documents");

        addSortToSearch(sort, searchRequestBuilder);

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

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

        SearchRequest searchRequest = searchRequestBuilder.request();

        _log.debug("Search query String  " + searchRequest.toString());

        ActionFuture<SearchResponse> future = client.search(searchRequest);

        SearchResponse searchResponse = future.actionGet();

        Hits hits = processSearchHits(searchResponse, query.getQueryConfig());

        hits.setQuery(query);

        TimeValue timeValue = searchResponse.getTook();

        hits.setSearchTime((float) timeValue.getSecondsFrac());
        return hits;
    } catch (Exception e) {
        throw new SearchException(e);
    }
}

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

License:Open Source License

@Override
public Hits search(String searchEngineId, long companyId, Query query, Sort[] sorts, int start, int end)
        throws SearchException {

    try {/*from w  w w.ja v a2s. c om*/
        SolrQuery solrQuery = translateQuery(companyId, query, sorts, start, end);

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

        boolean allResults = false;

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

        return subset(solrQuery, query, query.getQueryConfig(), queryResponse, allResults);
    } catch (Exception e) {
        _log.error(e, e);

        if (!_swallowException) {
            throw new SearchException(e.getMessage());
        }

        return new HitsImpl();
    }
}

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 v a  2  s.co 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);
}

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

License:Open Source License

protected SolrQuery translateQuery(long companyId, Query query, Sort[] sorts, int start, int end)
        throws Exception {

    QueryConfig queryConfig = query.getQueryConfig();

    SolrQuery solrQuery = new SolrQuery();

    if (queryConfig.isHighlightEnabled()) {
        solrQuery.setHighlight(true);/*from   w  w  w.ja  v  a 2s.co m*/
        solrQuery.setHighlightFragsize(queryConfig.getHighlightFragmentSize());
        solrQuery.setHighlightSnippets(queryConfig.getHighlightSnippetSize());

        String localizedContentName = DocumentImpl.getLocalizedName(queryConfig.getLocale(), Field.CONTENT);

        String localizedTitleName = DocumentImpl.getLocalizedName(queryConfig.getLocale(), Field.TITLE);

        solrQuery.setParam("hl.fl", Field.CONTENT, localizedContentName, Field.TITLE, localizedTitleName);
    }

    solrQuery.setIncludeScore(queryConfig.isScoreEnabled());

    QueryTranslatorUtil.translateForSolr(query);

    String queryString = query.toString();

    StringBundler sb = new StringBundler(6);

    sb.append(queryString);
    sb.append(StringPool.SPACE);
    sb.append(StringPool.PLUS);
    sb.append(Field.COMPANY_ID);
    sb.append(StringPool.COLON);
    sb.append(companyId);

    solrQuery.setQuery(sb.toString());

    if ((start == QueryUtil.ALL_POS) && (end == QueryUtil.ALL_POS)) {
        solrQuery.setRows(0);
    } else {
        solrQuery.setRows(end - start);
        solrQuery.setStart(start);
    }

    if (sorts != null) {
        for (Sort sort : sorts) {
            if (sort == null) {
                continue;
            }

            String sortFieldName = sort.getFieldName();

            if (DocumentImpl.isSortableTextField(sortFieldName)) {
                sortFieldName = DocumentImpl.getSortableFieldName(sortFieldName);
            }

            ORDER order = ORDER.asc;

            if (Validator.isNull(sortFieldName) || !sortFieldName.endsWith("sortable")) {

                sortFieldName = "score";

                order = ORDER.desc;
            }

            if (sort.isReverse()) {
                order = ORDER.desc;
            }

            solrQuery.addSort(new SortClause(sortFieldName, order));
        }
    }

    return solrQuery;
}