Uploaded image for project: 'Solr'
  1. Solr
  2. SOLR-13227

Remove slow other-range checks from RangeFacetProcessor

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 7.5, 8.0, 9.0
    • 8.1, 9.0
    • faceting
    • None

    Description

      RangeFacetProcessor.getFacetRangeCountsDocValues is checking every range name over FacetParams.FacetRangeOther enum via catching IllegalArgumentException from valueOf, rethrowing it as SolrException and picking a branch based on the presence of last one.

      It is very slow due to enormous cost of failed Enum.valueOf.
      Also RangeFacetRequest.FacetRange already have a field with parsed FacetRangeOther value for special ranges or null for ordinary ones.

      Replacing this with simple null check leads to huge performance boost here.
      In real case with a lot of intervals (~2000) whole QTime is reduced from 300ms to 50ms by this patch.

      Attachments

        1. profiler.png
          350 kB
          Nikolay Khitrin
        2. SOLR-13227.patch
          3 kB
          Mikhail Khludnev
        3. SOLR-13227.patch
          3 kB
          Nikolay Khitrin

        Issue Links

          Activity

            People

              mkhl Mikhail Khludnev
              khitrin Nikolay Khitrin
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: