mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
Merged 5.2.N (5.2.2) to HEAD (5.2)
136084 gjames: Merged searchbcr (5.2.1) to 5.2.N (5.2.1) 135514 gjames: SEARCH-339: Adding filterQuery to facet interval/facet fields git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@137456 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -52,6 +52,9 @@ import org.alfresco.rest.framework.resource.parameters.Params;
|
||||
import org.alfresco.service.ServiceRegistry;
|
||||
import org.alfresco.service.cmr.repository.InvalidNodeRefException;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
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.ResultSet;
|
||||
import org.alfresco.service.cmr.search.ResultSetRow;
|
||||
import org.alfresco.service.cmr.search.SpellCheckResult;
|
||||
@@ -289,10 +292,10 @@ public class ResultMapper
|
||||
|
||||
//Field Facets
|
||||
Map<String, List<Pair<String, Integer>>> facetFields = solrResultSet.getFieldFacets();
|
||||
ffcs = getFacetBuckets(facetFields, true);
|
||||
ffcs = getFacetBuckets(facetFields, true, null);
|
||||
|
||||
Map<String, List<Pair<String, Integer>>> facetInterval = solrResultSet.getFacetIntervals();
|
||||
List<FacetFieldContext> intervals = getFacetBuckets(facetInterval, false);
|
||||
List<FacetFieldContext> intervals = getFacetBuckets(facetInterval, false, searchQuery);
|
||||
|
||||
//Spelling
|
||||
SpellCheckResult spell = solrResultSet.getSpellCheckResult();
|
||||
@@ -306,7 +309,7 @@ public class ResultMapper
|
||||
return isNullContext(context)?null:context;
|
||||
}
|
||||
|
||||
protected List<FacetFieldContext> getFacetBuckets(Map<String, List<Pair<String, Integer>>> facetFields, boolean withDisplay)
|
||||
protected List<FacetFieldContext> getFacetBuckets(Map<String, List<Pair<String, Integer>>> facetFields, boolean withDisplay, SearchQuery searchQuery)
|
||||
{
|
||||
if (facetFields != null && !facetFields.isEmpty())
|
||||
{
|
||||
@@ -319,7 +322,8 @@ public class ResultMapper
|
||||
for (Pair<String, Integer> buck:facet.getValue())
|
||||
{
|
||||
Object display = withDisplay?propertyLookup.lookup(facet.getKey(), buck.getFirst()):null;
|
||||
buckets.add(new Bucket(buck.getFirst(), facet.getKey()+":NOT_DONE", buck.getSecond(), display));
|
||||
String filterQuery = lookupQuery(facet.getKey(), buck.getFirst(), searchQuery);
|
||||
buckets.add(new Bucket(buck.getFirst(), facet.getKey()+":"+filterQuery, buck.getSecond(), display));
|
||||
}
|
||||
ffcs.add(new FacetFieldContext(facet.getKey(), buckets));
|
||||
}
|
||||
@@ -330,6 +334,26 @@ public class ResultMapper
|
||||
return null;
|
||||
}
|
||||
|
||||
protected String lookupQuery(String facetKey, String key, SearchQuery searchQuery)
|
||||
{
|
||||
if (searchQuery != null
|
||||
&& searchQuery.getFacetIntervals() != null
|
||||
&& searchQuery.getFacetIntervals().getIntervals() != null
|
||||
&& !searchQuery.getFacetIntervals().getIntervals().isEmpty())
|
||||
{
|
||||
Optional<Interval> found = searchQuery.getFacetIntervals().getIntervals().stream().filter(interval -> facetKey.equals(interval.getField())).findFirst();
|
||||
if (found.isPresent())
|
||||
{
|
||||
if (found.get().getSets() != null)
|
||||
{
|
||||
Optional<IntervalSet> foundSet = found.get().getSets().stream().filter(aSet -> key.equals(aSet.getLabel())).findFirst();
|
||||
if (foundSet.isPresent()) return foundSet.get().toRange();
|
||||
}
|
||||
}
|
||||
}
|
||||
return key;
|
||||
}
|
||||
|
||||
/**
|
||||
* Is the context null?
|
||||
* @param context
|
||||
|
@@ -99,7 +99,11 @@ public class ResultMapperTests
|
||||
static ResultMapper mapper;
|
||||
public static final String JSON_REPONSE = "{\"responseHeader\":{\"status\":0,\"QTime\":9},\"_original_parameters_\":\"org.apache.solr.common.params.DefaultSolrParams:{params(df=TEXT&alternativeDic=DEFAULT_DICTIONARY&fl=DBID,score&start=0&fq={!afts}AUTHORITY_FILTER_FROM_JSON&fq={!afts}TENANT_FILTER_FROM_JSON&rows=1000&locale=en_US&wt=json),defaults(carrot.url=id&spellcheck.collateExtendedResults=true&carrot.produceSummary=true&spellcheck.maxCollations=3&spellcheck.maxCollationTries=5&spellcheck.alternativeTermCount=2&spellcheck.extendedResults=false&defType=afts&spellcheck.maxResultsForSuggest=5&spellcheck=false&carrot.outputSubClusters=false&spellcheck.count=5&carrot.title=mltext@m___t@{http://www.alfresco.org/model/content/1.0}title&carrot.snippet=content@s___t@{http://www.alfresco.org/model/content/1.0}content&spellcheck.collate=true)}\",\"_field_mappings_\":{},\"_date_mappings_\":{},\"_range_mappings_\":{},\"_pivot_mappings_\":{},\"_interval_mappings_\":{},\"_stats_field_mappings_\":{},\"_stats_facet_mappings_\":{},\"_facet_function_mappings_\":{},\"response\":{\"numFound\":6,\"start\":0,\"maxScore\":0.7849362,\"docs\":[{\"DBID\":565,\"score\":0.7849362},{\"DBID\":566,\"score\":0.7849362},{\"DBID\":521,\"score\":0.3540957},{\"DBID\":514,\"score\":0.33025497},{\"DBID\":420,\"score\":0.32440513},{\"DBID\":415,\"score\":0.2780319}]},"
|
||||
+ "\"facet_counts\":{\"facet_queries\":{\"small\":0,\"large\":0,\"xtra small\":3,\"xtra large\":0,\"medium\":8,\"XX large\":0},"
|
||||
+ "\"facet_fields\":{\"content.size\":[\"Big\",8,\"Brown\",3,\"Fox\",5,\"Jumped\",2,\"somewhere\",3]},\"facet_dates\":{},\"facet_ranges\":{},\"facet_intervals\":{}\n" + " },"
|
||||
+ "\"facet_fields\":{\"content.size\":[\"Big\",8,\"Brown\",3,\"Fox\",5,\"Jumped\",2,\"somewhere\",3]},"
|
||||
+"\"facet_dates\":{},"
|
||||
+"\"facet_ranges\":{},"
|
||||
+"\"facet_intervals\":{\"creator\":{\"last\":4,\"first\":0},\"datetime@sd@{http://www.alfresco.org/model/content/1.0}created\":{\"earlier\":5,\"lastYear\":0,\"currentYear\":0}}"
|
||||
+ "},"
|
||||
+ "\"spellcheck\":{\"searchInsteadFor\":\"alfresco\"},"
|
||||
+ "\"highlighting\": {"
|
||||
+ " \"_DEFAULT_!800001579e3d1964!800001579e3d1969\": {\"name\": [\"some very <al>long<fresco> name\"],\"title\": [\"title1 is very <al>long<fresco>\"], \"DBID\": \"521\"},"
|
||||
@@ -267,6 +271,13 @@ public class ResultMapperTests
|
||||
assertEquals(1, searchContext.getFacetsFields().size());
|
||||
assertEquals("content.size",searchContext.getFacetsFields().get(0).getLabel());
|
||||
assertEquals(5,searchContext.getFacetsFields().get(0).getBuckets().size());
|
||||
|
||||
//Facet intervals
|
||||
assertEquals(2, searchContext.getFacetIntervals().size());
|
||||
assertEquals("creator",searchContext.getFacetIntervals().get(0).getLabel());
|
||||
assertEquals("last",searchContext.getFacetIntervals().get(0).getBuckets().get(0).getLabel());
|
||||
assertEquals("creator:(a,b]",searchContext.getFacetIntervals().get(0).getBuckets().get(0).getFilterQuery());
|
||||
assertEquals(4,searchContext.getFacetIntervals().get(0).getBuckets().get(0).getCount());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@@ -159,7 +159,7 @@ public class SearchQuerySerializerTests
|
||||
assertEquals("Creator", interval.getLabel());
|
||||
assertEquals("creator", interval.getField());
|
||||
is = interval.getSets().get(0);
|
||||
assertEquals("bob", is.getLabel());
|
||||
assertEquals("last", is.getLabel());
|
||||
assertEquals("a", is.getStart());
|
||||
assertEquals("b", is.getEnd());
|
||||
assertEquals(false, is.isStartInclusive());
|
||||
|
@@ -64,7 +64,7 @@ public class SerializerTestHelper implements RequestReader
|
||||
+ "\"facetQueries\": [{\"query\": \"cm:created:bob\",\"label\": \"small\"}],"
|
||||
+ "\"facetIntervals\": {\"sets\": [{ \"label\": \"king\", \"start\": \"1\", \"end\": \"2\",\"startInclusive\": true,\"endInclusive\": false}]"
|
||||
+ ",\"intervals\": [{\"field\": \"creator\",\"label\": \"Creator\","
|
||||
+ "\"sets\": [{\"label\": \"bob\",\"start\": \"a\",\"end\": \"b\",\"startInclusive\": false}]"
|
||||
+ "\"sets\": [{\"label\": \"last\",\"start\": \"a\",\"end\": \"b\",\"startInclusive\": false}]"
|
||||
+ "}]},"
|
||||
+ "\"spellcheck\": {\"query\": \"alfrezco\"},"
|
||||
+ "\"limits\": {\"permissionEvaluationCount\": \"2000\",\"permissionEvaluationTime\": \"5000\"},"
|
||||
|
Reference in New Issue
Block a user