Example usage for com.liferay.portal.kernel.search.facet Facet setFacetCollector

List of usage examples for com.liferay.portal.kernel.search.facet Facet setFacetCollector

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.search.facet Facet setFacetCollector.

Prototype

public void setFacetCollector(FacetCollector facetCollector);

Source Link

Usage

From source file:com.rivetlogic.portal.search.elasticsearch.util.ElasticsearchHelper.java

License:Open Source License

/**
 * This method converts the Elastic search facet results to Liferay facet collector.
 *
 * @param searchContext the search context
 * @param response the response// w ww. ja  v  a2  s.c  om
 */
private void collectFacetResults(SearchContext searchContext, SearchResponse response) {

    for (Entry<String, Facet> facetEntry : searchContext.getFacets().entrySet()) {
        Facet liferayFacet = facetEntry.getValue();
        if (!liferayFacet.isStatic()) {
            org.elasticsearch.search.facet.Facet esFacet = response.getFacets().facet(facetEntry.getKey());
            if (esFacet != null) {
                FacetCollector facetCollector = null;
                Map<String, Integer> facetResults = null;

                /**
                 * AssetEntries consist of Fully qualified class names, since the classnames are 
                 * case insensitive and at the same time ES facet result terms are returned in
                 * lowercase, we need to handle this case differently. While creating the Facet
                 * collectors, the terms (in this case Entryclassnames) are obtained from Liferay
                 * facet configuration.
                 * E.g:com.liferay.portlet.messageboards.model.MBThread would be converted to
                 * com.liferay.portlet.messageboards.model.mbmessage in ES server facet result   
                 */
                if ((liferayFacet instanceof AssetEntriesFacet)) {
                    if (_log.isDebugEnabled()) {
                        _log.debug("Handling AssetEntriesFacet now for field:" + facetEntry.getKey() + "...");
                    }
                    Map<String, Integer> esTermsFacetResults = parseESFacet(esFacet);
                    facetResults = new HashMap<String, Integer>();

                    for (String entryClassname : fetchEntryClassnames(liferayFacet)) {

                        if (esTermsFacetResults.get(entryClassname.toLowerCase()) != null) {
                            facetResults.put(entryClassname,
                                    esTermsFacetResults.get(entryClassname.toLowerCase()));
                        } else {
                            facetResults.put(entryClassname, new Integer(0));
                        }
                        if (_log.isDebugEnabled()) {
                            _log.debug("AssetEntriesFacet>>>>>>>>>>>>Term:" + entryClassname + " <<<<Count:"
                                    + esTermsFacetResults.get(entryClassname.toLowerCase()));
                        }
                    }

                } else if ((liferayFacet instanceof MultiValueFacet)) {
                    facetResults = new HashMap<String, Integer>();
                    TermsFacet esTermsFacetResults = (TermsFacet) esFacet;
                    for (TermsFacet.Entry entry : esTermsFacetResults) {
                        facetResults.put(entry.getTerm().string(), entry.getCount());
                        if (_log.isDebugEnabled()) {
                            _log.debug("MultiValueFacet>>>>>>>>>>>>Term:" + entry.getTerm().string()
                                    + " <<<<Count:" + entry.getCount());
                        }
                    }
                } else if ((liferayFacet instanceof RangeFacet)) {
                    facetResults = new HashMap<String, Integer>();
                    org.elasticsearch.search.facet.range.RangeFacet esRangeFacetResults = (org.elasticsearch.search.facet.range.RangeFacet) esFacet;
                    for (org.elasticsearch.search.facet.range.RangeFacet.Entry entry : esRangeFacetResults) {
                        facetResults.put(buildRangeTerm(entry), new Integer((int) entry.getCount()));
                        if (_log.isDebugEnabled()) {
                            _log.debug(">>>>>>>From:" + entry.getFromAsString() + ">>>>>>>To:"
                                    + entry.getToAsString() + ">>>>>>>Count:" + entry.getCount());
                        }
                    }
                }

                facetCollector = new ElasticsearchQueryFacetCollector(facetEntry.getKey(), facetResults);
                liferayFacet.setFacetCollector(facetCollector);
                if (_log.isDebugEnabled()) {
                    _log.debug("Facet collector successfully set for field:" + facetEntry.getKey() + "...");
                }
            }
        }
    }
}

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

License:Open Source License

protected void updateFacetCollectors(SearchContext searchContext, SearchResponse searchResponse) {

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

    for (Facet facet : facetsMap.values()) {
        if (facet.isStatic()) {
            continue;
        }//  w  w  w .  j  a  v  a2  s.  c om

        Aggregations facets = searchResponse.getAggregations();

        Aggregation elasticsearchFacet = facets.get(facet.getFieldName());

        FacetCollector facetCollector = new ElasticsearchFacetFieldCollector(elasticsearchFacet);

        facet.setFacetCollector(facetCollector);
    }

}

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;
        }/*from www .  jav  a 2s.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);
}