diff --git a/source/java/org/alfresco/rest/api/search/impl/ResultMapper.java b/source/java/org/alfresco/rest/api/search/impl/ResultMapper.java index 6c4d2e422a..a32547803b 100644 --- a/source/java/org/alfresco/rest/api/search/impl/ResultMapper.java +++ b/source/java/org/alfresco/rest/api/search/impl/ResultMapper.java @@ -331,7 +331,7 @@ public class ResultMapper Map>> facetInterval = solrResultSet.getFacetIntervals(); facets.addAll(getGenericFacetsForIntervals(facetInterval, searchQuery)); - Map facetRanges = solrResultSet.getFacetRanges(); + Map>> facetRanges = solrResultSet.getFacetRanges(); facets.addAll(getGenericFacetsForRanges(facetRanges, searchQuery)); List stats = getFieldStats(searchRequestContext, solrResultSet.getStats()); @@ -490,38 +490,38 @@ public class ResultMapper * @param searchQuery * @return GenericFacetResponse */ - protected static List getGenericFacetsForRanges( Map facetFields, SearchQuery searchQuery) + protected static List getGenericFacetsForRanges( Map>> facetFields, SearchQuery searchQuery) { List ffcs = new ArrayList<>(facetFields.size()); - if (facetFields != null && !facetFields.isEmpty()) + if (facetFields != null && !facetFields.isEmpty() && searchQuery.getQuery() != null) { List buckets = new ArrayList<>(); - for (Entry facet : facetFields.entrySet()) + for (Entry>> facet : facetFields.entrySet()) { - facet.getValue().forEach(action -> buckets.add(buildGenericBucketFromRange((Map) action))); + facet.getValue().forEach(action -> buckets.add(buildGenericBucketFromRange(facet.getKey(), (Map) action))); ffcs.add(new GenericFacetResponse(FACET_TYPE.range, facet.getKey(), buckets)); } } return ffcs; } - private static GenericBucket buildGenericBucketFromRange(Map facet) + private static GenericBucket buildGenericBucketFromRange(String facetField, Map facet) { - return new GenericBucket(facet.get("label"), - null, - null, - new HashSet(Arrays.asList(new SimpleMetric(METRIC_TYPE.count,facet.get("count")))), - null, - appendRangeInfo(facet.get("from"), facet.get("to"))); + String from = facet.get("from"); + String to = facet.get("to"); + String label = facet.get("label"); + facet.remove("label"); + String filterQ = String.format("%s:(%s TO %s)", + facetField, + from, + to); + return new GenericBucket(label, + filterQ, + null, + new HashSet(Arrays.asList(new SimpleMetric(METRIC_TYPE.count,facet.get("count")))), + null, + facet); } - private static Map appendRangeInfo(String from, String to) - { - // TODO Auto-generated method stub - Map rangeInfo = new HashMap(2); - rangeInfo.put("from", from); - rangeInfo.put("to", to); - return rangeInfo; - } /** diff --git a/source/test-java/org/alfresco/rest/api/search/ResultMapperTests.java b/source/test-java/org/alfresco/rest/api/search/ResultMapperTests.java index 1f3ae320e9..88b29beec3 100644 --- a/source/test-java/org/alfresco/rest/api/search/ResultMapperTests.java +++ b/source/test-java/org/alfresco/rest/api/search/ResultMapperTests.java @@ -479,6 +479,7 @@ public class ResultMapperTests assertEquals("0 - 100",rangeFacets.get(0).getBuckets().get(0).getLabel()); Object[] metrics = rangeFacets.get(0).getBuckets().get(0).getMetrics().toArray(); assertEquals("4",((SimpleMetric) metrics[0]).getValue().get("count")); + assertEquals("content.size:(0 TO 100)", rangeFacets.get(0).getBuckets().get(0).getFilterQuery()); Map facetInfo = rangeFacets.get(0).getBuckets().get(0).getFacetInfo(); assertEquals("0",facetInfo.get("from")); @@ -490,13 +491,15 @@ public class ResultMapperTests facetInfo = rangeFacets.get(0).getBuckets().get(1).getFacetInfo(); assertEquals("100",facetInfo.get("from")); assertEquals("200",facetInfo.get("to")); - + assertEquals("content.size:(100 TO 200)", rangeFacets.get(0).getBuckets().get(1).getFilterQuery()); + assertEquals("200 - 300",rangeFacets.get(0).getBuckets().get(2).getLabel()); metrics = rangeFacets.get(0).getBuckets().get(2).getMetrics().toArray(); assertEquals("3",((SimpleMetric) metrics[0]).getValue().get("count")); facetInfo = rangeFacets.get(0).getBuckets().get(2).getFacetInfo(); assertEquals("200",facetInfo.get("from")); assertEquals("300",facetInfo.get("to")); + assertEquals("content.size:(200 TO 300)", rangeFacets.get(0).getBuckets().get(2).getFilterQuery()); } @Test