Example usage for org.apache.solr.client.solrj.response RangeFacet getCounts

List of usage examples for org.apache.solr.client.solrj.response RangeFacet getCounts

Introduction

In this page you can find the example usage for org.apache.solr.client.solrj.response RangeFacet getCounts.

Prototype

public List<Count> getCounts() 

Source Link

Usage

From source file:com.frank.search.solr.core.ResultHelper.java

License:Apache License

/**
 * @param query//  w  w  w.j  a  va  2 s  .c om
 * @param response
 * @return
 * @since 1.5
 */
static Map<Field, Page<FacetFieldEntry>> convertFacetQueryResponseToRangeFacetPageMap(FacetQuery query,
        QueryResponse response) {
    Assert.notNull(query, "Cannot convert response for 'null', query");

    if (!hasFacets(query, response) || isEmpty(response.getFacetRanges())) {
        return Collections.emptyMap();
    }
    Map<Field, Page<FacetFieldEntry>> facetResult = new HashMap<Field, Page<FacetFieldEntry>>();

    Pageable pageable = query.getFacetOptions().getPageable();
    int initalPageSize = pageable.getPageSize();
    for (RangeFacet<?, ?> rangeFacet : response.getFacetRanges()) {

        if (rangeFacet == null || !StringUtils.hasText(rangeFacet.getName())) {
            continue;
        }

        Field field = new SimpleField(rangeFacet.getName());

        List<FacetFieldEntry> entries;
        long total;
        if (isNotEmpty(rangeFacet.getCounts())) {
            entries = new ArrayList<FacetFieldEntry>(initalPageSize);
            for (RangeFacet.Count count : rangeFacet.getCounts()) {
                entries.add(new SimpleFacetFieldEntry(field, count.getValue(), count.getCount()));
            }
            total = rangeFacet.getCounts().size();
        } else {
            entries = Collections.<FacetFieldEntry>emptyList();
            total = 0;
        }

        facetResult.put(field, new SolrResultPage<FacetFieldEntry>(entries, pageable, total, null));

    }

    return facetResult;
}

From source file:com.nridge.ds.solr.SolrResponseBuilder.java

License:Open Source License

@SuppressWarnings({ "unchecked", "rawtypes" })
private void populateFacet(DataTable aTable, RangeFacet aRangeFacet) {
    DataField schemaField;//from  w ww  .  jav  a2s.  c om
    Logger appLogger = mAppMgr.getLogger(this, "populateFacet");

    appLogger.trace(mAppMgr.LOGMSG_TRACE_ENTER);

    DataBag resultBag = mBag;
    String fieldName = aRangeFacet.getName();
    schemaField = resultBag.getFieldByName(fieldName);
    Field.Type fieldType = facetRangeToFieldType(aRangeFacet, schemaField);
    if (Field.isDateOrTime(fieldType)) {
        RangeFacet<Date, Date> facetRangeDate = (RangeFacet<Date, Date>) aRangeFacet;

        aTable.newRow();
        aTable.setValueByName("field_name", fieldName);
        if ((schemaField != null) && (StringUtils.isNotEmpty(schemaField.getTitle())))
            aTable.setValueByName("field_title", schemaField.getTitle());
        else
            aTable.setValueByName("field_title", Field.nameToTitle(fieldName));
        aTable.setValueByName("field_type", Field.typeToString(fieldType));
        Object objectValue = facetRangeDate.getStart();
        if (objectValue != null)
            aTable.setValueByName("field_start", facetRangeDate.getStart());
        objectValue = facetRangeDate.getEnd();
        if (objectValue != null)
            aTable.setValueByName("field_finish", facetRangeDate.getEnd());
        objectValue = facetRangeDate.getGap();
        if (objectValue != null)
            aTable.setValueByName("field_gap", objectValue.toString());
        objectValue = facetRangeDate.getAfter();
        if (objectValue != null)
            aTable.setValueByName("count_after", objectValue.toString());
        objectValue = facetRangeDate.getBefore();
        if (objectValue != null)
            aTable.setValueByName("count_before", objectValue.toString());
        objectValue = facetRangeDate.getBetween();
        if (objectValue != null)
            aTable.setValueByName("count_between", objectValue.toString());
        ArrayList<String> fieldValueList = new ArrayList<>();
        for (RangeFacet.Count rfCount : facetRangeDate.getCounts())
            fieldValueList.add(String.format("%s (%d)", rfCount.getValue(), rfCount.getCount()));
        aTable.setValuesByName("facet_name_count", fieldValueList);
        aTable.addRow();
    } else {
        RangeFacet.Numeric facetRangeNumber = (RangeFacet.Numeric) aRangeFacet;

        aTable.newRow();
        aTable.setValueByName("field_name", fieldName);
        if ((schemaField != null) && (StringUtils.isNotEmpty(schemaField.getTitle())))
            aTable.setValueByName("field_title", schemaField.getTitle());
        else
            aTable.setValueByName("field_title", Field.nameToTitle(fieldName));
        aTable.setValueByName("field_type", Field.typeToString(fieldType));
        Object objectValue = facetRangeNumber.getStart();
        if (objectValue != null)
            aTable.setValueByName("field_start", objectValue.toString());
        objectValue = facetRangeNumber.getEnd();
        if (objectValue != null)
            aTable.setValueByName("field_finish", objectValue.toString());
        objectValue = facetRangeNumber.getGap();
        if (objectValue != null)
            aTable.setValueByName("field_gap", objectValue.toString());
        objectValue = facetRangeNumber.getAfter();
        if (objectValue != null)
            aTable.setValueByName("count_after", objectValue.toString());
        objectValue = facetRangeNumber.getBefore();
        if (objectValue != null)
            aTable.setValueByName("count_before", objectValue.toString());
        objectValue = facetRangeNumber.getBetween();
        if (objectValue != null)
            aTable.setValueByName("count_between", objectValue.toString());
        ArrayList<String> fieldValueList = new ArrayList<>();
        for (RangeFacet.Count rfCount : facetRangeNumber.getCounts())
            fieldValueList.add(String.format("%s (%d)", rfCount.getValue(), rfCount.getCount()));
        aTable.setValuesByName("facet_name_count", fieldValueList);
        aTable.addRow();
    }

    appLogger.trace(mAppMgr.LOGMSG_TRACE_DEPART);
}

From source file:eu.prestoprime.search.util.ResultProcessor.java

License:Open Source License

public static Facets extractFacetsFromResponse(QueryResponse response, Map<P4FacetField, String> facetFilters) {
    // Map for all facetFields with according values from the queryResponse
    Facets facets = new Facets();
    // Put facetValues to this map

    for (FacetField field : response.getFacetFields()) {
        // validate FacetField against P4Schema and get the respective
        // FacetField

        P4FacetField p4Field = P4FacetField.get(field.getName());

        if (field.getValueCount() >= 1 && p4Field != null) {
            Facet facet = new Facet();
            facet.setFacetName(p4Field.getFieldName());
            for (Count facetValue : field.getValues()) {
                if (!facetValue.getName().isEmpty()) {
                    Value value = new Value();
                    value.setCount(facetValue.getCount());
                    value.setTerm(facetValue.getName());

                    // check if this value is already selected
                    boolean isSelected = (facetFilters.get(p4Field) != null
                            && facetFilters.get(p4Field).contains(facetValue.getName()));
                    value.setSelected(isSelected);

                    LOGGER.debug("Facet value: " + facetValue.getName() + " is selected? " + isSelected);

                    // build a filterquery that is used when this facet is
                    // selected
                    String filter = "";
                    if (isSelected) { // deselect
                        String[] singleValues = facetFilters.get(p4Field).replaceAll("\"", "").split("( AND )");
                        LOGGER.debug("Building new filter for deselecting. Starting from: "
                                + facetFilters.get(p4Field));
                        String delim = "";
                        int i = 0;
                        for (String s : singleValues) {
                            LOGGER.debug("Iteration " + (++i) + ": " + s + " eq " + facetValue.getName() + " ? "
                                    + s.equals(facetValue.getName()));
                            if (!s.equals(facetValue.getName())) {
                                LOGGER.debug("No. Append this one -> ");
                                filter += delim + "\"" + s + "\"";
                                delim = " AND ";

                            }//from ww w .  ja v a  2 s  .c om
                            LOGGER.debug("Iteration " + (++i) + ": " + filter);
                        }
                    } else {
                        filter = facetFilters.get(p4Field);
                        LOGGER.debug("Altering old filter for selecting. Starting from: " + filter);
                        if (filter == null || filter.isEmpty()) {
                            filter = "\"" + facetValue.getName() + "\"";
                        } else {
                            filter += " AND \"" + facetValue.getName() + "\"";
                        }
                    }
                    LOGGER.debug("Result filter = " + filter);
                    value.setFilterQuery(filter);
                    facet.getValue().add(value);
                }
            }
            facets.getFacet().add(facet);
        }
    }

    // do the same for rangeFacets
    for (RangeFacet range : response.getFacetRanges()) {
        P4FacetField p4Field = P4FacetField.get(range.getName());

        if (range.getCounts().size() >= 1 && p4Field != null) {
            Facet facet = new Facet();
            facet.setFacetName(p4Field.getFieldName());
            if (p4Field.getAssocField().getType().equals(FieldType.TDATE)) {
                for (RangeFacet.Count count : (List<RangeFacet.Count>) range.getCounts()) {
                    Value value = new Value();
                    value.setTerm(formatDateString(count.getValue()));
                    value.setCount(count.getCount());

                    boolean isSelected = (facetFilters.get(p4Field) != null
                            && !facetFilters.get(p4Field).isEmpty());
                    value.setSelected(isSelected);

                    if (!isSelected) {
                        value.setFilterQuery(SolrQueryUtils.getDateRangeFilter(count.getValue()));
                    } else {
                        value.setFilterQuery("");
                    }

                    facet.getValue().add(value);
                }
            } else {
                // TODO implement for other ranged facets. right now no
                // other fieldTypes used yet...
            }
            facets.getFacet().add(facet);
        }
    }

    return facets;
}

From source file:org.alfresco.solr.query.DistributedAlfrescoSolrFacetingTest.java

License:Open Source License

@Test
public void rangeFaceting_mincountMissing_shouldReturnFacetsMincountOne() throws Exception {
    String jsonQuery = "{\"query\":\"(suggest:a)\",\"locales\":[\"en\"], \"templates\": [{\"name\":\"t1\", \"template\":\"%cm:content\"}], \"authorities\": [\"joel\"], \"tenants\": []}";
    putHandleDefaults();/*from   w w w  .ja  v  a2 s. c  o m*/

    QueryResponse queryResponse = query(getDefaultTestClient(), true, jsonQuery,
            params("qt", "/afts", "shards.qt", "/afts", "start", "0", "rows", "0", "fl", "score,id", "facet",
                    "true", "facet.range", "{http://www.alfresco.org/model/content/1.0}created",
                    "facet.range.start", "2000-01-02T00:00:00Z", "facet.range.end", "2020-01-02T00:00:00Z",
                    "facet.range.gap", "+100DAY"));

    //facet.distrib.mco=true
    List<RangeFacet> facetRanges = queryResponse.getFacetRanges();
    assertThat(facetRanges.size(), is(1));
    RangeFacet createdDateRangeFacet = facetRanges.get(0);
    List<RangeFacet.Count> createdDateCounts = createdDateRangeFacet.getCounts();

    assertThat(createdDateCounts.size(), is(4));
    assertThat(createdDateCounts.get(0).getValue(), is("2014-10-15T00:00:00Z"));
    assertThat(createdDateCounts.get(0).getCount(), is(2));

    assertThat(createdDateCounts.get(1).getValue(), is("2015-01-23T00:00:00Z"));
    assertThat(createdDateCounts.get(1).getCount(), is(1));

    assertThat(createdDateCounts.get(2).getValue(), is("2015-11-19T00:00:00Z"));
    assertThat(createdDateCounts.get(2).getCount(), is(1));

    assertThat(createdDateCounts.get(3).getValue(), is("2016-12-23T00:00:00Z"));
    assertThat(createdDateCounts.get(3).getCount(), is(1));
}

From source file:org.alfresco.solr.query.DistributedAlfrescoSolrFacetingTest.java

License:Open Source License

@Test
public void rangeFaceting_mincountSetZero_shouldReturnFacetsMincountOne() throws Exception {
    String jsonQuery = "{\"query\":\"(suggest:a)\",\"locales\":[\"en\"], \"templates\": [{\"name\":\"t1\", \"template\":\"%cm:content\"}], \"authorities\": [\"joel\"], \"tenants\": []}";
    putHandleDefaults();//w w  w. j  ava 2 s .  co  m

    QueryResponse queryResponse = query(getDefaultTestClient(), true, jsonQuery,
            params("qt", "/afts", "shards.qt", "/afts", "start", "0", "rows", "0", "fl", "score,id", "facet",
                    "true", "facet.range", "{http://www.alfresco.org/model/content/1.0}created",
                    "facet.range.start", "2000-01-02T00:00:00Z", "facet.range.end", "2020-01-02T00:00:00Z",
                    "facet.range.gap", "+100DAY", "facet.mincount", "0"));

    //facet.distrib.mco=true
    List<RangeFacet> facetRanges = queryResponse.getFacetRanges();
    assertThat(facetRanges.size(), is(1));
    RangeFacet createdDateRangeFacet = facetRanges.get(0);
    List<RangeFacet.Count> createdDateCounts = createdDateRangeFacet.getCounts();

    assertThat(createdDateCounts.size(), is(4));
    assertThat(createdDateCounts.get(0).getValue(), is("2014-10-15T00:00:00Z"));
    assertThat(createdDateCounts.get(0).getCount(), is(2));

    assertThat(createdDateCounts.get(1).getValue(), is("2015-01-23T00:00:00Z"));
    assertThat(createdDateCounts.get(1).getCount(), is(1));

    assertThat(createdDateCounts.get(2).getValue(), is("2015-11-19T00:00:00Z"));
    assertThat(createdDateCounts.get(2).getCount(), is(1));

    assertThat(createdDateCounts.get(3).getValue(), is("2016-12-23T00:00:00Z"));
    assertThat(createdDateCounts.get(3).getCount(), is(1));
}

From source file:org.alfresco.solr.query.DistributedAlfrescoSolrFacetingTest.java

License:Open Source License

@Test
public void rangeFaceting_mincountSetTwo_shouldReturnFacetsMincountTwo() throws Exception {
    String jsonQuery = "{\"query\":\"(suggest:a)\",\"locales\":[\"en\"], \"templates\": [{\"name\":\"t1\", \"template\":\"%cm:content\"}], \"authorities\": [\"joel\"], \"tenants\": []}";
    putHandleDefaults();//  www.  j  av  a2s  .c  o m

    QueryResponse queryResponse = query(getDefaultTestClient(), true, jsonQuery,
            params("qt", "/afts", "shards.qt", "/afts", "start", "0", "rows", "0", "fl", "score,id", "facet",
                    "true", "facet.range", "{http://www.alfresco.org/model/content/1.0}created",
                    "facet.range.start", "2000-01-02T00:00:00Z", "facet.range.end", "2020-01-02T00:00:00Z",
                    "facet.range.gap", "+100DAY", "facet.mincount", "2"));

    //facet.distrib.mco=true
    List<RangeFacet> facetRanges = queryResponse.getFacetRanges();
    assertThat(facetRanges.size(), is(1));
    RangeFacet createdDateRangeFacet = facetRanges.get(0);
    List<RangeFacet.Count> createdDateCounts = createdDateRangeFacet.getCounts();

    assertThat(createdDateCounts.size(), is(1));
    assertThat(createdDateCounts.get(0).getValue(), is("2014-10-15T00:00:00Z"));
    assertThat(createdDateCounts.get(0).getCount(), is(2));
}

From source file:org.apache.jackrabbit.core.query.lucene.FacetHandler.java

License:Open Source License

private void extractFacetInfo(NamedList<Object> info, SolrParams solrParams) {
    // Parse the queries
    _facetQuery = new LinkedHashMap<String, Long>();
    NamedList<Long> fq = (NamedList<Long>) info.get("facet_queries");
    if (fq != null) {
        for (Map.Entry<String, Long> entry : fq) {
            _facetQuery.put(entry.getKey(), entry.getValue());
        }//from   w w w.jav a 2 s . com
    }

    // Parse the facet info into fields
    // TODO?? The list could be <int> or <long>? If always <long> then we can switch to <Long>
    NamedList<NamedList<Number>> ff = (NamedList<NamedList<Number>>) info.get("facet_fields");
    Map<String, FieldType> fieldTypeMap = new HashMap<>();
    if (ff != null) {
        _facetFields = new ArrayList<FacetField>(ff.size());
        _limitingFacets = new ArrayList<FacetField>(ff.size());
        long minsize = totalSize;
        for (Map.Entry<String, NamedList<Number>> facet : ff) {
            String key = StringUtils.substringBeforeLast(facet.getKey(),
                    SimpleJahiaJcrFacets.PROPNAME_INDEX_SEPARATOR);
            String fieldInIndex = StringUtils.substringAfterLast(facet.getKey(),
                    SimpleJahiaJcrFacets.PROPNAME_INDEX_SEPARATOR);
            FacetField f = new FacetField(key);
            if (!fieldTypeMap.containsKey(key)) {
                try {
                    //Find a key like f.field_name#unknownumber.facet.nodetype
                    Pattern facetNodetype = Pattern.compile("f\\." + key + "#[0-9]+\\.facet\\.nodetype");
                    String nodetypeName = null;
                    Iterator<String> parameterNamesIterator = solrParams.getParameterNamesIterator();
                    while (parameterNamesIterator.hasNext()) {
                        String next = parameterNamesIterator.next();
                        if (facetNodetype.matcher(next).matches()) {
                            nodetypeName = solrParams.get(next);
                            break;
                        }
                    }
                    ExtendedPropertyDefinition epd = NodeTypeRegistry.getInstance().getNodeType(nodetypeName)
                            .getPropertyDefinition(key);
                    fieldTypeMap.put(key, getType(epd));
                } catch (NoSuchNodeTypeException e) {
                    log.error(e.getMessage(), e);
                }
            }
            for (Map.Entry<String, Number> entry : facet.getValue()) {
                String facetValue = entry.getKey();
                String query = fieldTypeMap.get(key).toInternal(entry.getKey());
                Matcher matcher = valueWithQuery.matcher(facetValue);
                if (matcher.matches()) {
                    query = matcher.group(2);
                    facetValue = matcher.replaceFirst("$1");
                }
                f.add(facetValue, entry.getValue().longValue());
                f.getValues().get(f.getValueCount() - 1).setFilterQuery(
                        ClientUtils.escapeQueryChars(fieldInIndex) + ":" + ClientUtils.escapeQueryChars(query));
            }

            _facetFields.add(f);
            FacetField nl = f.getLimitingFields(minsize);
            if (nl.getValueCount() > 0) {
                _limitingFacets.add(nl);
            }
        }
    }

    // Parse date facets
    NamedList<NamedList<Object>> df = (NamedList<NamedList<Object>>) info.get("facet_dates");
    if (df != null) {
        // System.out.println(df);
        _facetDates = new ArrayList<FacetField>(df.size());
        for (Map.Entry<String, NamedList<Object>> facet : df) {
            // System.out.println("Key: " + facet.getKey() + " Value: " + facet.getValue());
            NamedList<Object> values = facet.getValue();
            String gap = (String) values.get("gap");
            Date end = (Date) values.get("end");
            FacetField f = new FacetField(StringUtils.substringBeforeLast(facet.getKey(),
                    SimpleJahiaJcrFacets.PROPNAME_INDEX_SEPARATOR), gap, end);

            for (Map.Entry<String, Object> entry : values) {
                try {
                    String key = StringUtils.substringBeforeLast(entry.getKey(),
                            SimpleJahiaJcrFacets.PROPNAME_INDEX_SEPARATOR);
                    String query = StringUtils.substringAfterLast(entry.getKey(),
                            SimpleJahiaJcrFacets.PROPNAME_INDEX_SEPARATOR);
                    f.add(key, Long.parseLong(entry.getValue().toString()));
                    if (!StringUtils.isEmpty(query)) {
                        String rangePrefix = null;
                        if (query.contains(RANGEFROM_EXCLUSIVE_PREFIX)) {
                            rangePrefix = RANGEFROM_EXCLUSIVE_PREFIX;
                        } else if (query.contains(RANGEFROM_INCLUSIVE_PREFIX)) {
                            rangePrefix = RANGEFROM_INCLUSIVE_PREFIX;
                        }
                        if (!StringUtils.isEmpty(rangePrefix)) {
                            f.getValues().get(f.getValueCount() - 1)
                                    .setFilterQuery(ClientUtils
                                            .escapeQueryChars(StringUtils.substringBefore(query, rangePrefix))
                                            + rangePrefix + StringUtils.substringAfter(query, rangePrefix));
                        }
                    }
                } catch (NumberFormatException e) {
                    // Ignore for non-number responses which are already handled above
                }
            }

            _facetDates.add(f);
        }
    }

    // Parse range facets
    NamedList<NamedList<Object>> rf = (NamedList<NamedList<Object>>) info.get("facet_ranges");
    if (rf != null) {
        // System.out.println(df);
        _facetRanges = new ArrayList<RangeFacet>(rf.size());
        for (Map.Entry<String, NamedList<Object>> facet : rf) {
            NamedList<Object> values = facet.getValue();
            Object rawGap = values.get("gap");

            RangeFacet rangeFacet;
            if (rawGap instanceof Number) {
                Number gap = (Number) rawGap;
                Number start = (Number) values.get("start");
                Number end = (Number) values.get("end");

                Number before = (Number) values.get("before");
                Number after = (Number) values.get("after");

                rangeFacet = new RangeFacet.Numeric(StringUtils.substringBeforeLast(facet.getKey(),
                        SimpleJahiaJcrFacets.PROPNAME_INDEX_SEPARATOR), start, end, gap, before, after);
            } else {
                String gap = (String) rawGap;
                Date start = (Date) values.get("start");
                Date end = (Date) values.get("end");

                Number before = (Number) values.get("before");
                Number after = (Number) values.get("after");

                rangeFacet = new RangeFacet.Date(StringUtils.substringBeforeLast(facet.getKey(),
                        SimpleJahiaJcrFacets.PROPNAME_INDEX_SEPARATOR), start, end, gap, before, after);
            }

            NamedList<Integer> counts = (NamedList<Integer>) values.get("counts");
            for (Map.Entry<String, Integer> entry : counts) {
                try {
                    String key = StringUtils.substringBeforeLast(entry.getKey(),
                            SimpleJahiaJcrFacets.PROPNAME_INDEX_SEPARATOR);
                    String query = StringUtils.substringAfterLast(entry.getKey(),
                            SimpleJahiaJcrFacets.PROPNAME_INDEX_SEPARATOR);

                    rangeFacet.addCount(key, entry.getValue());

                    if (!StringUtils.isEmpty(query)) {
                        String rangePrefix = null;
                        if (query.contains(RANGEFROM_EXCLUSIVE_PREFIX)) {
                            rangePrefix = RANGEFROM_EXCLUSIVE_PREFIX;
                        } else if (query.contains(RANGEFROM_INCLUSIVE_PREFIX)) {
                            rangePrefix = RANGEFROM_INCLUSIVE_PREFIX;
                        }
                        if (!StringUtils.isEmpty(rangePrefix)) {
                            ((RangeFacet.Count) rangeFacet.getCounts().get(rangeFacet.getCounts().size() - 1))
                                    .setFilterQuery(ClientUtils
                                            .escapeQueryChars(StringUtils.substringBefore(query, rangePrefix))
                                            + rangePrefix + StringUtils.substringAfter(query, rangePrefix));
                        }
                    }
                } catch (NumberFormatException e) {
                    // Ignore for non-number responses which are already handled above
                }
            }

            _facetRanges.add(rangeFacet);
        }
    }
}

From source file:org.apache.nifi.processors.solr.QuerySolr.java

License:Apache License

private static void addFacetsFromSolrResponseToJsonWriter(final QueryResponse response, final JsonWriter writer)
        throws IOException {
    writer.beginObject();/*from   w ww. j  a  v  a2  s  .com*/
    writer.name("facet_queries");
    writer.beginArray();
    for (final Map.Entry<String, Integer> facetQuery : response.getFacetQuery().entrySet()) {
        writer.beginObject();
        writer.name("facet").value(facetQuery.getKey());
        writer.name("count").value(facetQuery.getValue());
        writer.endObject();
    }
    writer.endArray();

    writer.name("facet_fields");
    writer.beginObject();
    for (final FacetField facetField : response.getFacetFields()) {
        writer.name(facetField.getName());
        writer.beginArray();
        for (final FacetField.Count count : facetField.getValues()) {
            writer.beginObject();
            writer.name("facet").value(count.getName());
            writer.name("count").value(count.getCount());
            writer.endObject();
        }
        writer.endArray();
    }
    writer.endObject();

    writer.name("facet_ranges");
    writer.beginObject();
    for (final RangeFacet rangeFacet : response.getFacetRanges()) {
        writer.name(rangeFacet.getName());
        writer.beginArray();
        final List<Count> list = rangeFacet.getCounts();
        for (final Count count : list) {
            writer.beginObject();
            writer.name("facet").value(count.getValue());
            writer.name("count").value(count.getCount());
            writer.endObject();
        }
        writer.endArray();
    }
    writer.endObject();

    writer.name("facet_intervals");
    writer.beginObject();
    for (final IntervalFacet intervalFacet : response.getIntervalFacets()) {
        writer.name(intervalFacet.getField());
        writer.beginArray();
        for (final IntervalFacet.Count count : intervalFacet.getIntervals()) {
            writer.beginObject();
            writer.name("facet").value(count.getKey());
            writer.name("count").value(count.getCount());
            writer.endObject();
        }
        writer.endArray();
    }
    writer.endObject();
    writer.endObject();
}

From source file:org.jahia.services.query.QueryResultWrapperImpl.java

License:Open Source License

@Override
public boolean isRangeFacetsEmpty(List<RangeFacet> rangeFacets) {
    if (rangeFacets.isEmpty()) {
        return true;
    } else {/*from  ww w . j av  a 2  s  .co m*/
        for (RangeFacet facetField : rangeFacets) {
            List<RangeFacet.Count> counts = facetField.getCounts();
            for (RangeFacet.Count count : counts) {
                if (count.getCount() != 0) {
                    return false;
                }
            }
        }
    }
    return true;
}

From source file:org.jahia.taglibs.facet.Functions.java

License:Open Source License

/**
 * Check whether there is an unapplied range facet value existing in the facet. Useful in order to determine
 * whether a title/label should be displayed or not.
 *
 * @param rangeFacet    the RangeFacet object holding all facet values for the facet field
 * @param appliedFacets variable retrieved from {@link Functions#getAppliedFacetFilters(String)}
 * @return true if unapplied range facet value exists otherwise false
 *//* ww  w .j  a v  a 2 s .  c  o m*/
public static boolean isUnappliedRangeFacetValueExisting(RangeFacet<?, ?> rangeFacet,
        Map<String, List<KeyValue>> appliedFacets) {
    for (RangeFacet.Count facetCount : rangeFacet.getCounts()) {
        if (!isFacetValueApplied(facetCount, appliedFacets)) {
            return true;
        }
    }
    return false;
}