mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
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:
@@ -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
|
||||
|
@@ -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())
|
||||
|
@@ -29,6 +29,7 @@ package org.alfresco.rest.api.search.model;
|
||||
import org.alfresco.rest.framework.resource.parameters.Paging;
|
||||
import org.alfresco.service.cmr.search.GeneralHighlightParameters;
|
||||
import org.alfresco.service.cmr.search.IntervalParameters;
|
||||
import org.alfresco.service.cmr.search.RangeParameters;
|
||||
import org.alfresco.service.cmr.search.StatsRequestParameters;
|
||||
import org.codehaus.jackson.annotate.JsonCreator;
|
||||
import org.codehaus.jackson.annotate.JsonProperty;
|
||||
@@ -60,9 +61,10 @@ public class SearchQuery
|
||||
private final boolean includeRequest;
|
||||
private final List<Pivot> pivots;
|
||||
private final List<StatsRequestParameters> stats;
|
||||
private final RangeParameters facetRange;
|
||||
|
||||
public static final SearchQuery EMPTY = new SearchQuery(null, null, null, null, null, null,
|
||||
null,null, null, null, null,null, null, null, null, null, null, null);
|
||||
null,null, null, null, null,null, null, null, null, null, null, null,null);
|
||||
|
||||
@JsonCreator
|
||||
public SearchQuery(@JsonProperty("query") Query query,
|
||||
@@ -82,7 +84,8 @@ public class SearchQuery
|
||||
@JsonProperty("highlight")GeneralHighlightParameters highlight,
|
||||
@JsonProperty("facetIntervals")IntervalParameters facetIntervals,
|
||||
@JsonProperty("pivots") List<Pivot> pivots,
|
||||
@JsonProperty("stats") List<StatsRequestParameters> stats)
|
||||
@JsonProperty("stats") List<StatsRequestParameters> stats,
|
||||
@JsonProperty("facetRange") RangeParameters facetRange)
|
||||
{
|
||||
this.query = query;
|
||||
this.includeRequest = includeRequest==null?false:includeRequest;
|
||||
@@ -102,6 +105,7 @@ public class SearchQuery
|
||||
this.facetIntervals = facetIntervals;
|
||||
this.pivots = pivots;
|
||||
this.stats = stats;
|
||||
this.facetRange = facetRange;
|
||||
}
|
||||
|
||||
public Query getQuery()
|
||||
@@ -192,4 +196,10 @@ public class SearchQuery
|
||||
{
|
||||
return stats;
|
||||
}
|
||||
|
||||
public RangeParameters getFacetRange()
|
||||
{
|
||||
return facetRange;
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user