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

TermsComponent sharded and terms.sort=index performance

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 7.7
    • Fix Version/s: 8.1, master (9.0)
    • Labels:
      None
    • Environment:

      Linux 64bit debian

      20-node cluster

      Description

      When the TermsComponet distributes across all shards, all (terms.limit=-1) are returned.

      This ought not to be needed when using terms.sort=index.

      When using terms.lower=a in small test base (400k entries) it took 8.5-11.5s to do a

      /terms?terms.fl=register&terms.sort=index&terms.lower=a I did not try it on production data (10x)

      I do get the reason for getting all terms when sorting by count, however when sorting by index, no more than the terms.limit number rows is required from any shard. Most likely some will get discarded due to presence in more than one shard. Given no term.min/maxcount (which definetely throws a spanner in the works).

       

      I've attached what I think would do the trick.

      I haven't actually tested the patch (it compiles, however some other files in the checkout I have doesn't: ant compile, javac: "error: cannot find symbol")

       

      Might be somewhat related issue (SOLR-2908). I didn't quite get the more subtle information in it.

       

       

      Tested by

      • applying patch to 7.7.1 (the one we use in production)
      • start up on spare server (during off house on test system)
      • add a replica from a collection (so that it'll serve requests)
      • request /terms?terms.fl=phrase.title&terms.sort=index&terms.lower=a from the instance ~30 ms
      • request the same from another unpatched instance ~17k ms
      • both returned same result
      • added terms.mincount=2 to the quick request. failed with out of memory
      • restarted sever with more memory (.5g -> 8g)
      • request completed in ~18k ms

       

      I don't see how I'm supposed to unit test the functionality given it requires a cloud instance and sufficient data to give measurable difference with or without extra request arguments.

       

        Attachments

        1. 0001-SOLR-13337-Avoid-requesting-unneeded-terms-from-shar.patch
          2 kB
          Morten Bøgeskov
        2. SOLR-13337.patch
          0.1 kB
          Morten Bøgeskov
        3. SOLR-13337.patch
          2 kB
          Mikhail Khludnev
        4. SOLR-13337.patch
          2 kB
          Morten Bøgeskov
        5. screenshot-1.png
          27 kB
          Mikhail Khludnev
        6. SOLR-13337.patch
          4 kB
          Morten Bøgeskov
        7. SOLR-13337.patch
          8 kB
          Mikhail Khludnev
        8. cvrg.jpg
          51 kB
          Mikhail Khludnev
        9. SOLR-13337.patch
          9 kB
          Mikhail Khludnev

          Issue Links

            Activity

              People

              • Assignee:
                mkhl Mikhail Khludnev
                Reporter:
                bogeskov Morten Bøgeskov
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: