Example usage for com.liferay.portal.kernel.search.facet.config FacetConfiguration getData

List of usage examples for com.liferay.portal.kernel.search.facet.config FacetConfiguration getData

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.search.facet.config FacetConfiguration getData.

Prototype

public JSONObject getData() 

Source Link

Usage

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

License:Open Source License

/**
 * This method adds multiple facets to Elastic search query builder.
 *
 * @param searchContext the search context
 * @param searchRequestBuilder the search request builder
 *//*from ww w .  j  a v a2 s.c o m*/
private void handleFacetQueries(SearchContext searchContext, SearchRequestBuilder searchRequestBuilder) {
    Map<String, Facet> facets = searchContext.getFacets();
    for (Facet facet : facets.values()) {
        if (!facet.isStatic()) {

            FacetConfiguration liferayFacetConfiguration = facet.getFacetConfiguration();
            JSONObject liferayFacetDataJSONObject = liferayFacetConfiguration.getData();
            if (facet instanceof MultiValueFacet) {

                TermsFacetBuilder termsFacetBuilder = FacetBuilders
                        .termsFacet(liferayFacetConfiguration.getFieldName());
                termsFacetBuilder.field(liferayFacetConfiguration.getFieldName());
                if (liferayFacetDataJSONObject.has(ElasticsearchIndexerConstants.ELASTIC_SEARCH_MAXTERMS)) {
                    termsFacetBuilder.size(liferayFacetDataJSONObject
                            .getInt(ElasticsearchIndexerConstants.ELASTIC_SEARCH_MAXTERMS));
                }
                searchRequestBuilder.addFacet(termsFacetBuilder);
            } else if (facet instanceof RangeFacet) {
                RangeFacetBuilder rangeFacetBuilder = FacetBuilders
                        .rangeFacet(liferayFacetConfiguration.getFieldName());

                /**
                 *A typical ranges array looks like below.
                 *[{"range":"[20140603200000 TO 20140603220000]","label":"past-hour"},{"range":"[20140602210000 TO 20140603220000]","label":"past-24-hours"},...]
                 * 
                 */
                JSONArray rangesJSONArray = liferayFacetDataJSONObject
                        .getJSONArray(ElasticsearchIndexerConstants.ELASTIC_SEARCH_RANGES);
                rangeFacetBuilder.field(ElasticsearchIndexerConstants.ELASTIC_SEARCH_INNERFIELD_MDATE);
                if (rangesJSONArray != null) {
                    for (int i = 0; i < rangesJSONArray.length(); i++) {
                        JSONObject rangeJSONObject = rangesJSONArray.getJSONObject(i);
                        String[] fromTovalues = fetchFromToValuesInRage(rangeJSONObject);
                        if (fromTovalues != null) {
                            rangeFacetBuilder.addRange(fromTovalues[0].trim(), fromTovalues[1].trim());
                        }
                    }
                }
                searchRequestBuilder.addFacet(rangeFacetBuilder);
            }
        }
    }
}

From source file:com.rknowsys.portal.search.elastic.facet.LiferayFacetParser.java

License:Open Source License

public static AggregationBuilder getFacetBuilder(RangeFacet rangeFacet) {
    FacetConfiguration facetConfiguration = rangeFacet.getFacetConfiguration();
    RangeBuilder rangeFacetBuilder = AggregationBuilders.range(facetConfiguration.getFieldName());
    JSONObject facetData = facetConfiguration.getData();
    if (rangeFacet.isStatic()) {
        return null;
    }//from   w w  w  . j ava2  s  . c  om

    if (facetData.has("ranges")) {
        JSONArray rangesJSONArray = facetData.getJSONArray("ranges");
        if (rangesJSONArray != null) {
            rangeFacetBuilder.field(facetConfiguration.getFieldName());
            for (int i = 0; i < rangesJSONArray.length(); i++) {
                JSONObject rangeJSONObject = rangesJSONArray.getJSONObject(i);
                String rangeString = rangeJSONObject.getString("range");
                String[] range = RangeParserUtil.parserRange(rangeString);
                rangeFacetBuilder.addRange(Double.parseDouble(range[0]), Double.parseDouble(range[1]));
            }
            return rangeFacetBuilder;
        } else {
            return null;
        }

    } else {
        return null;
    }

}

From source file:com.rknowsys.portal.search.elastic.facet.LiferayFacetParser.java

License:Open Source License

public static AggregationBuilder getFacetBuilder(MultiValueFacet multiValueFacet) {
    FacetConfiguration facetConfiguration = multiValueFacet.getFacetConfiguration();
    JSONObject facetData = facetConfiguration.getData();

    if (multiValueFacet.isStatic()) {
        return null;
    }/*from w ww .j  a va 2s.c o  m*/
    TermsBuilder termsFacetBuilder = AggregationBuilders.terms(facetConfiguration.getFieldName());
    if (facetData.has("maxTerms")) {
        termsFacetBuilder.size(facetData.getInt("maxTerms"));
    }
    termsFacetBuilder.field(facetConfiguration.getFieldName());
    return termsFacetBuilder;
}

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 w w  w . j av 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);
}