Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
4.3
-
None
-
New, Patch Available
Description
I have an unexpected performance difference between the SamplingAccumulator and the StandardFacetAccumulator.
The case is an index with about 5M documents and each document containing about 10 fields. I created a facet on each of those fields. When searching to retrieve facet-counts (using 1 CountFacetRequest), the SamplingAccumulator is about twice as fast as the StandardFacetAccumulator. This is expected and a nice speed-up.
However, when I use more CountFacetRequests to retrieve facet-counts for more than one field, the speeds of the SampingAccumulator decreases, to the point where the StandardFacetAccumulator is faster.
FacetRequests Sampling Standard 1 391 ms 1100 ms 2 531 ms 1095 ms 3 948 ms 1108 ms 4 1400 ms 1110 ms 5 1901 ms 1102 ms
Is this behaviour normal? I did not expect it, as the SamplingAccumulator needs to do less work?
Some code to show what I do:
searcher.search( facetsQuery, facetsCollector );
final List<FacetResult> collectedFacets = facetsCollector.getFacetResults();
final FacetSearchParams facetSearchParams = new FacetSearchParams( facetRequests ); FacetsCollector facetsCollector; if ( isSampled ) { facetsCollector = FacetsCollector.create( new SamplingAccumulator( new RandomSampler(), facetSearchParams, searcher.getIndexReader(), taxo ) ); } else { facetsCollector = FacetsCollector.create( FacetsAccumulator.create( facetSearchParams, searcher.getIndexReader(), taxo ) );