[jira] [Created] (LUCENE-5015) unexpected performance difference between SamplingAccumulator and StandardFacetAccumulator

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

[jira] [Created] (LUCENE-5015) unexpected performance difference between SamplingAccumulator and StandardFacetAccumulator

JIRA jira@apache.org
Rob Audenaerde created LUCENE-5015:

             Summary: unexpected performance difference between SamplingAccumulator and StandardFacetAccumulator
                 Key: LUCENE-5015
                 URL: https://issues.apache.org/jira/browse/LUCENE-5015
             Project: Lucene - Core
          Issue Type: Bug
          Components: modules/facet
    Affects Versions: 4.3
            Reporter: Rob Audenaerde

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 ) );
        facetsCollector = FacetsCollector.create( FacetsAccumulator.create( facetSearchParams, searcher.getIndexReader(), taxo ) );

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]