Merged 5.2.N (5.2.2) to HEAD (5.2)

137078 gjames: Merged searchrep (5.2.1) to 5.2.N (5.2.1)
      136974 msuzuki: Search-426, added conversion for facet query and facet fields


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@137593 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Andrei Rebegea
2017-06-15 11:18:16 +00:00
parent b9baa6ad54
commit 7ef0ef8679

View File

@@ -327,7 +327,14 @@ public class ResultMapper
//Field Facets
Map<String, List<Pair<String, Integer>>> facetFields = solrResultSet.getFieldFacets();
ffcs.addAll(getFacetBucketsForFacetFields(facetFields, searchQuery));
if(FacetFormat.V2 == searchQuery.getFacetFormat())
{
facets.addAll(getFacetBucketsForFacetFieldsAsFacets(facetFields, searchQuery));
}
else
{
ffcs.addAll(getFacetBucketsForFacetFields(facetFields, searchQuery));
}
Map<String, List<Pair<String, Integer>>> facetInterval = solrResultSet.getFacetIntervals();
facets.addAll(getGenericFacetsForIntervals(facetInterval, searchQuery));
@@ -456,7 +463,47 @@ public class ResultMapper
return Collections.emptyList();
}
protected List<GenericFacetResponse> getFacetBucketsForFacetFieldsAsFacets(Map<String, List<Pair<String, Integer>>> facetFields, SearchQuery searchQuery)
{
if (facetFields != null && !facetFields.isEmpty())
{
List<GenericFacetResponse> ffcs = new ArrayList<>(facetFields.size());
for (Entry<String, List<Pair<String, Integer>>> facet:facetFields.entrySet())
{
if (facet.getValue() != null && !facet.getValue().isEmpty())
{
List<GenericBucket> buckets = new ArrayList<>(facet.getValue().size());
for (Pair<String, Integer> buck:facet.getValue())
{
Object display = null;
String filterQuery = null;
if (searchQuery != null
&& searchQuery.getFacetFields() != null
&& searchQuery.getFacetFields().getFacets() != null
&& !searchQuery.getFacetFields().getFacets().isEmpty())
{
Optional<FacetField> found = searchQuery.getFacetFields().getFacets().stream().filter(
queryable -> facet.getKey().equals(queryable.getLabel()!=null?queryable.getLabel():queryable.getField())).findFirst();
if (found.isPresent())
{
display = propertyLookup.lookup(found.get().getField(), buck.getFirst());
String fq = found.get().toFilterQuery(buck.getFirst());
if (fq != null)
{
filterQuery = fq;
}
}
}
GenericBucket bucket = new GenericBucket(buck.getFirst(), filterQuery, null , new HashSet<Metric>(Arrays.asList(new SimpleMetric(METRIC_TYPE.count,String.valueOf(buck.getSecond())))), null, null);
buckets.add(bucket);
}
ffcs.add(new GenericFacetResponse(FACET_TYPE.field,facet.getKey(), buckets));
}
}
return ffcs;
}
return Collections.emptyList();
}
protected List<FacetFieldContext> getFacetBucketsForFacetFields(Map<String, List<Pair<String, Integer>>> facetFields, SearchQuery searchQuery)
{
if (facetFields != null && !facetFields.isEmpty())