Uploaded image for project: 'Lucene - Core'
  1. Lucene - Core
  2. LUCENE-5015

Unexpected performance difference between SamplingAccumulator and StandardFacetAccumulator

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 4.3
    • Fix Version/s: 4.4, 6.0
    • Component/s: modules/facet
    • Labels:
      None
    • Lucene Fields:
      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 ) );
      

        Attachments

        1. LUCENE-5015.patch
          21 kB
          Shai Erera
        2. LUCENE-5015.patch
          19 kB
          Gilad Barkai
        3. LUCENE-5015.patch
          21 kB
          Gilad Barkai
        4. LUCENE-5015.patch
          18 kB
          Gilad Barkai
        5. LUCENE-5015.patch
          18 kB
          Gilad Barkai
        6. LUCENE-5015.patch
          18 kB
          Gilad Barkai

          Activity

            People

            • Assignee:
              shaie Shai Erera
              Reporter:
              robau Rob Audenaerde
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: