Example usage for org.springframework.data.solr.core.query StatsOptions getSelectiveFacets

List of usage examples for org.springframework.data.solr.core.query StatsOptions getSelectiveFacets

Introduction

In this page you can find the example usage for org.springframework.data.solr.core.query StatsOptions getSelectiveFacets.

Prototype

public Map<Field, Collection<Field>> getSelectiveFacets() 

Source Link

Usage

From source file:org.springframework.data.solr.core.DefaultQueryParser.java

private void processStatsOptions(SolrQuery solrQuery, Query query) {
    StatsOptions statsOptions = query.getStatsOptions();

    if (statsOptions == null || (CollectionUtils.isEmpty(statsOptions.getFields())
            && CollectionUtils.isEmpty(statsOptions.getFacets())
            && CollectionUtils.isEmpty(statsOptions.getSelectiveFacets()))) {
        return;/*from  w  w w.j av  a  2  s . co  m*/
    }

    solrQuery.set(StatsParams.STATS, true);

    for (Field field : statsOptions.getFields()) {
        solrQuery.add(StatsParams.STATS_FIELD, field.getName());

        String selectiveCalcDistinctParam = CommonParams.FIELD + "." + field.getName() + "."
                + StatsParams.STATS_CALC_DISTINCT;
        Boolean selectiveCountDistincts = statsOptions.isSelectiveCalcDistincts(field);

        if (selectiveCountDistincts != null) {
            solrQuery.add(selectiveCalcDistinctParam, String.valueOf(selectiveCountDistincts.booleanValue()));
        }

    }

    for (Field field : statsOptions.getFacets()) {
        solrQuery.add(StatsParams.STATS_FACET, field.getName());
    }

    for (Entry<Field, Collection<Field>> entry : statsOptions.getSelectiveFacets().entrySet()) {

        Field field = entry.getKey();
        String prefix = CommonParams.FIELD + "." + field.getName() + ".";

        String paramName = prefix + StatsParams.STATS_FACET;
        for (Field facetField : entry.getValue()) {
            solrQuery.add(paramName, facetField.getName());
        }

    }

}