Merged searchrep (5.2.1) to 5.2.N (5.2.1)

136673 msuzuki: SEARCH-340, adding facet range search


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@137038 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Gethin James
2017-06-01 11:07:54 +00:00
parent 6981d5bf57
commit be9d0cc1f7
7 changed files with 121 additions and 17 deletions

View File

@@ -29,7 +29,6 @@ package org.alfresco.rest.api.search.impl;
import static org.alfresco.rest.api.search.impl.StoreMapper.DELETED;
import static org.alfresco.rest.api.search.impl.StoreMapper.LIVE_NODES;
import static org.alfresco.rest.api.search.impl.StoreMapper.VERSIONS;
import com.sun.javafx.font.Metrics;
import org.alfresco.repo.search.impl.lucene.SolrJSONResultSet;
import org.alfresco.repo.search.impl.solr.facet.facetsresponse.GenericBucket;
import org.alfresco.repo.search.impl.solr.facet.facetsresponse.GenericFacetResponse;
@@ -322,6 +321,9 @@ public class ResultMapper
Map<String, List<Pair<String, Integer>>> facetInterval = solrResultSet.getFacetIntervals();
facets.addAll(getGenericFacetsForIntervals(facetInterval, searchQuery));
Map<String, List<Pair<String, Integer>>> facetRanges = solrResultSet.getFacetRanges();
facets.addAll(getGenericFacetsForRanges(facetRanges, searchQuery));
List<GenericFacetResponse> stats = getFieldStats(searchRequestContext, solrResultSet.getStats());
List<GenericFacetResponse> pimped = getPivots(searchRequestContext, solrResultSet.getPivotFacets(), stats);
@@ -473,7 +475,32 @@ public class ResultMapper
}
return Collections.emptyList();
}
/**
* Transforms the facet range response into generic facet response.
* @param facetFields
* @param searchQuery
* @return GenericFacetResponse
*/
protected static List<GenericFacetResponse> getGenericFacetsForRanges(Map<String, List<Pair<String, Integer>>> facetFields, SearchQuery searchQuery)
{
List<GenericFacetResponse> ffcs = new ArrayList<>(facetFields.size());
if (facetFields != null && !facetFields.isEmpty())
{
for (Entry<String, List<Pair<String, Integer>>> facet:facetFields.entrySet())
{
if (facet.getValue() != null && !facet.getValue().isEmpty())
{
List<GenericBucket> buckets = new ArrayList<>();
facet.getValue().forEach(action -> buckets.add(
new GenericBucket(action.getFirst(), null, null ,
new HashSet<Metric>(Arrays.asList(new SimpleMetric(METRIC_TYPE.count,String.valueOf(action.getSecond())))),
null)));
ffcs.add(new GenericFacetResponse(FACET_TYPE.range, facet.getKey(), buckets));
}
}
}
return ffcs;
}
/**
* Returns generic faceting responses for Intervals
* @param facetFields

View File

@@ -51,6 +51,7 @@ import org.alfresco.service.cmr.search.Interval;
import org.alfresco.service.cmr.search.IntervalParameters;
import org.alfresco.service.cmr.search.IntervalSet;
import org.alfresco.service.cmr.search.LimitBy;
import org.alfresco.service.cmr.search.RangeParameters;
import org.alfresco.service.cmr.search.SearchParameters;
import org.alfresco.service.cmr.search.SearchParameters.FieldFacet;
import org.alfresco.service.cmr.search.SearchParameters.FieldFacetMethod;
@@ -510,7 +511,24 @@ public class SearchMapper
}
sp.setInterval(facetIntervals);
}
/**
* Sets the Range Parameters object on search parameters
* @param sp SearchParameters
* @param rangeParams RangeParameters
*/
public void fromFacetRange(SearchParameters sp, RangeParameters rangeParams)
{
if(rangeParams != null)
{
ParameterCheck.mandatory("facetRange", rangeParams);
ParameterCheck.mandatory("field ", rangeParams.getField());
ParameterCheck.mandatory("facet range start ", rangeParams.getStart());
ParameterCheck.mandatory("facet range end ", rangeParams.getEnd());
ParameterCheck.mandatory("facet range gap ", rangeParams.getGap());
sp.setRange(rangeParams);
}
}
public void fromPivot(SearchParameters sp, List<StatsRequestParameters> stats, FacetFields facetFields, List<Pivot> pivots, SearchRequestContext searchRequestContext)
{
if (facetFields != null && pivots != null && !pivots.isEmpty())