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

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

Introduction

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

Prototype

public String getFieldName() 

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  w  w  w .  j av a  2  s . com*/
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;
    }/*w  w  w  .  j  a v  a  2 s . c  o m*/

    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  w  w.j a v  a2  s .  com
    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  ww  w.  ja  v  a  2 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);
}