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

137038 gjames: 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/HEAD/root@137553 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Andrei Rebegea
2017-06-15 11:13:29 +00:00
parent 3185fba7bb
commit 5e9c375c7c
7 changed files with 121 additions and 17 deletions

View File

@@ -117,7 +117,7 @@ public class ResultMapperTests
+ "\"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_ranges\":{\"content.size\": {\"counts\": [\"0\",4,\"100\",6,\"200\",3],\"gap\": 100,\"start\": 0,\"end\": 300}},"
+"\"facet_pivot\":{\"creator,modifier\":[{\"field\":\"creator\",\"count\":7,\"pivot\":[{\"field\":\"modifier\",\"count\":3,\"value\":\"mjackson\"},{\"field\":\"modifier\",\"count\":4,\"value\":\"admin\"}],\"value\":\"mjackson\"}]},"
+"\"facet_intervals\":{\"creator\":{\"last\":4,\"first\":0},\"TheCreated\":{\"earlier\":5,\"lastYear\":0,\"currentYear\":854}}"
+ "},"
@@ -320,8 +320,8 @@ public class ResultMapperTests
assertEquals("great", searchContext.getRequest().getQuery().getUserQuery());
//Pivot
assertEquals(5, searchContext.getFacets().size());
GenericFacetResponse pivotFacet = searchContext.getFacets().get(2);
assertEquals(6, searchContext.getFacets().size());
GenericFacetResponse pivotFacet = searchContext.getFacets().get(3);
assertEquals(FACET_TYPE.pivot,pivotFacet.getType());
assertEquals("creator",pivotFacet.getLabel());
assertEquals(2, pivotFacet.getBuckets().size());
@@ -348,7 +348,7 @@ public class ResultMapperTests
assertEquals("{count=4}",metrics[0].getValue().toString());
//Stats
GenericFacetResponse statsFacet = searchContext.getFacets().get(3);
GenericFacetResponse statsFacet = searchContext.getFacets().get(4);
assertEquals(FACET_TYPE.stats,statsFacet.getType());
assertEquals("created",statsFacet.getLabel());
Set<Metric> statsMetrics = statsFacet.getBuckets().get(0).getMetrics();
@@ -362,7 +362,7 @@ public class ResultMapperTests
assertTrue(statsMetrics.contains(new SimpleMetric(METRIC_TYPE.sum, 1.458318720769983E15)));
assertTrue(statsMetrics.contains(new SimpleMetric(METRIC_TYPE.stddev, 5.6250677994522545E10)));
statsFacet = searchContext.getFacets().get(4);
statsFacet = searchContext.getFacets().get(5);
assertEquals("numericLabel",statsFacet.getLabel());
statsMetrics = statsFacet.getBuckets().get(0).getMetrics();
assertEquals(7,statsMetrics.size());
@@ -459,6 +459,33 @@ public class ResultMapperTests
assertEquals(METRIC_TYPE.count,((SimpleMetric) metrics[0]).getType());
assertEquals("854",((SimpleMetric) metrics[0]).getValue().get("count"));
}
@Test
public void testRange() throws Exception
{
ResultSet results = mockResultset(Collections.emptyList(),Collections.emptyList());
SearchQuery searchQuery = helper.searchQueryFromJson();
SearchRequestContext searchRequest = SearchRequestContext.from(searchQuery);
SearchParameters searchParams = searchMapper.toSearchParameters(EMPTY_PARAMS, searchQuery, searchRequest);
SearchContext searchContext = mapper.toSearchContext((SolrJSONResultSet) results, searchRequest, searchQuery, 0);
//Numeric facet range
List<GenericFacetResponse> rangeFacets = searchContext.getFacets().stream()
.filter(f -> f.getType().equals(FACET_TYPE.range)).collect(Collectors.toList());
assertEquals(1, rangeFacets.size());
assertEquals(3, rangeFacets.get(0).getBuckets().size());
assertEquals("content.size",rangeFacets.get(0).getLabel());
assertEquals("0",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("100",rangeFacets.get(0).getBuckets().get(1).getLabel());
metrics = rangeFacets.get(0).getBuckets().get(1).getMetrics().toArray();
assertEquals("6",((SimpleMetric) metrics[0]).getValue().get("count"));
assertEquals("200",rangeFacets.get(0).getBuckets().get(2).getLabel());
metrics = rangeFacets.get(0).getBuckets().get(2).getMetrics().toArray();
assertEquals("3",((SimpleMetric) metrics[0]).getValue().get("count"));
}
@Test
/**

View File

@@ -59,6 +59,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.SearchService;
@@ -797,16 +798,31 @@ public class SearchMapperTests
searchMapper.fromFacetIntervals(searchParameters, intervalParameters);
assertEquals(searchParameters.getInterval(), intervalParameters);
}
@Test
public void facetRange()
{
SearchParameters searchParameters = new SearchParameters();
RangeParameters rangeParams = new RangeParameters(null, null, null, null);
try
{
searchMapper.fromFacetRange(searchParameters, rangeParams);
fail();
}
catch (IllegalArgumentException iae)
{
assertNotNull(iae);
}
rangeParams = new RangeParameters("content.size", "0", "100000", "1000");
searchMapper.fromFacetRange(searchParameters, rangeParams);
assertEquals(searchParameters.getRange(), rangeParams);
}
private SearchQuery minimalQuery()
{
Query query = new Query("cmis", "foo", "");
SearchQuery sq = new SearchQuery(query, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
SearchQuery sq = new SearchQuery(query, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,null);
return sq;
}
@Test
public void facetGroup()
{
}
}

View File

@@ -45,6 +45,7 @@ import org.alfresco.service.cmr.search.FieldHighlightParameters;
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.RangeParameters;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -170,6 +171,10 @@ public class SearchQuerySerializerTests
assertEquals(1,searchQuery.getStats().size());
assertEquals("cm:creator",searchQuery.getStats().get(0).getField());
assertEquals("mylabel",searchQuery.getStats().get(0).getLabel());
//Range Facet
RangeParameters range = searchQuery.getFacetRange();
assertNotNull(range);
}
@Test

View File

@@ -64,6 +64,7 @@ public class SerializerTestHelper implements RequestReader
+ "\"facetFields\": {\"facets\": [{\"field\": \"cm:creator\",\"prefix\": \"myquery2\",\"sort\": \"COUNT\",\"missing\": \"false\"}, {\"field\": \"modifier\",\"label\": \"mylabel\",\"method\": \"FC\",\"mincount\": \"5\"}, {\"field\": \"owner\",\"label\": \"ownerLabel\"}]},"
+ "\"facetQueries\": [{\"query\": \"cm:created:bob\",\"label\": \"small\"}],"
+ "\"pivots\": [{\"key\": \"mylabel\"}],"
+ "\"facetRange\": {\"field\": \"content.size\",\"facet.range.start\": \"0\",\"facet.range.end\": \"300\",\"facet.range.gap\": \"100\"},"
+ "\"facetIntervals\": {\"sets\": [{ \"label\": \"king\", \"start\": \"1\", \"end\": \"2\",\"startInclusive\": true,\"endInclusive\": false}]"
+ ",\"intervals\": [{\"field\": \"cm:creator\",\"label\": \"creator\","
+ "\"sets\": [{\"label\": \"last\",\"start\": \"a\",\"end\": \"b\",\"startInclusive\": false}]"