You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@lucene.apache.org by GitBox <gi...@apache.org> on 2021/04/14 06:03:20 UTC
[GitHub] [lucene] zacharymorn edited a comment on pull request #81: LUCENE-9335: [WIP] Speed up pure disjunction with BMM
zacharymorn edited a comment on pull request #81:
URL: https://github.com/apache/lucene/pull/81#issuecomment-819252139
Hi Adrien,
I've pushed up two additional commits with different changes, and run luceneutil to get multiple benchmark results:
---
Commit : https://github.com/apache/lucene/pull/81/commits/13ce57b3715eed4fc56c249bb1442c35b93a1aeb
Net changes being compared with baseline:
1. `DisjunctionSumScorer` uses `MaxScoreSumPropagator` for block max related logic
2. Uses `DisjunctionSumScorer` instead of `WANDScorer` when pure disjunction on term query
Benchmark result 1:
```
TaskQPS baseline StdDevQPS my_modified_version StdDev Pct diff p-value
OrHighLow 685.16 (7.5%) 661.24 (6.8%) -3.5% ( -16% - 11%) 0.122
OrHighMed 206.80 (4.1%) 201.18 (4.8%) -2.7% ( -11% - 6%) 0.054
Fuzzy1 71.65 (11.6%) 69.85 (12.0%) -2.5% ( -23% - 23%) 0.502
BrowseDayOfYearSSDVFacets 27.19 (6.9%) 26.78 (8.2%) -1.5% ( -15% - 14%) 0.536
Wildcard 217.30 (5.6%) 214.22 (7.2%) -1.4% ( -13% - 12%) 0.489
Fuzzy2 23.01 (3.3%) 22.71 (2.7%) -1.3% ( -7% - 4%) 0.172
OrNotHighLow 1081.94 (4.4%) 1070.52 (3.7%) -1.1% ( -8% - 7%) 0.415
MedTerm 1473.41 (3.0%) 1458.42 (4.1%) -1.0% ( -7% - 6%) 0.367
PKLookup 214.52 (3.4%) 212.73 (3.0%) -0.8% ( -7% - 5%) 0.412
LowTerm 2037.07 (4.8%) 2020.31 (3.9%) -0.8% ( -9% - 8%) 0.551
Prefix3 271.77 (3.3%) 269.54 (4.7%) -0.8% ( -8% - 7%) 0.522
HighTerm 1249.12 (4.3%) 1238.91 (4.7%) -0.8% ( -9% - 8%) 0.565
OrHighHigh 45.71 (3.0%) 45.37 (2.5%) -0.7% ( -5% - 4%) 0.397
BrowseMonthTaxoFacets 13.06 (2.8%) 12.99 (2.8%) -0.6% ( -6% - 5%) 0.513
OrHighNotHigh 650.00 (5.5%) 646.61 (4.4%) -0.5% ( -9% - 9%) 0.740
BrowseDateTaxoFacets 10.85 (3.1%) 10.80 (3.5%) -0.5% ( -6% - 6%) 0.635
AndHighHigh 122.39 (3.3%) 121.81 (3.2%) -0.5% ( -6% - 6%) 0.648
Respell 79.32 (1.7%) 79.00 (1.2%) -0.4% ( -3% - 2%) 0.396
AndHighLow 792.61 (5.1%) 789.43 (4.5%) -0.4% ( -9% - 9%) 0.792
BrowseDayOfYearTaxoFacets 10.87 (3.0%) 10.83 (3.3%) -0.4% ( -6% - 6%) 0.694
LowSpanNear 76.74 (1.4%) 76.47 (1.6%) -0.3% ( -3% - 2%) 0.463
HighSloppyPhrase 34.99 (2.6%) 34.93 (3.2%) -0.2% ( -5% - 5%) 0.840
OrHighNotLow 721.14 (4.8%) 719.84 (5.4%) -0.2% ( -9% - 10%) 0.911
OrNotHighHigh 622.07 (3.5%) 621.05 (3.8%) -0.2% ( -7% - 7%) 0.888
HighTermTitleBDVSort 327.87 (16.8%) 327.34 (17.5%) -0.2% ( -29% - 41%) 0.976
HighSpanNear 49.03 (2.8%) 48.96 (2.9%) -0.2% ( -5% - 5%) 0.859
HighIntervalsOrdered 44.35 (1.8%) 44.28 (1.3%) -0.2% ( -3% - 3%) 0.757
LowSloppyPhrase 24.15 (2.4%) 24.13 (3.1%) -0.1% ( -5% - 5%) 0.914
AndHighMed 297.73 (3.6%) 297.71 (2.7%) -0.0% ( -6% - 6%) 0.995
MedSpanNear 64.27 (1.7%) 64.28 (1.5%) 0.0% ( -3% - 3%) 0.988
MedSloppyPhrase 36.84 (1.9%) 36.84 (2.8%) 0.0% ( -4% - 4%) 0.986
BrowseMonthSSDVFacets 31.09 (4.9%) 31.11 (2.3%) 0.1% ( -6% - 7%) 0.954
IntNRQ 188.61 (1.5%) 188.91 (1.7%) 0.2% ( -2% - 3%) 0.750
HighPhrase 386.99 (2.9%) 388.05 (3.4%) 0.3% ( -5% - 6%) 0.787
OrHighNotMed 729.88 (5.5%) 732.50 (5.7%) 0.4% ( -10% - 12%) 0.840
MedPhrase 380.97 (3.1%) 383.02 (3.1%) 0.5% ( -5% - 6%) 0.579
HighTermDayOfYearSort 332.45 (13.1%) 336.61 (13.1%) 1.2% ( -22% - 31%) 0.763
TermDTSort 364.87 (10.7%) 369.51 (12.9%) 1.3% ( -20% - 27%) 0.733
LowPhrase 403.73 (2.9%) 409.07 (3.2%) 1.3% ( -4% - 7%) 0.177
OrNotHighMed 611.71 (5.4%) 621.18 (4.0%) 1.5% ( -7% - 11%) 0.303
HighTermMonthSort 165.61 (9.8%) 171.22 (11.1%) 3.4% ( -15% - 26%) 0.306
```
Benchmark result 2:
```
TaskQPS baseline StdDevQPS my_modified_version StdDev Pct diff p-value
OrHighHigh 46.46 (1.4%) 34.06 (2.2%) -26.7% ( -29% - -23%) 0.000
OrHighLow 620.75 (6.1%) 567.45 (8.2%) -8.6% ( -21% - 6%) 0.000
OrHighMed 170.06 (4.3%) 162.65 (5.3%) -4.4% ( -13% - 5%) 0.004
Prefix3 524.59 (4.3%) 512.98 (5.1%) -2.2% ( -11% - 7%) 0.136
Fuzzy1 91.31 (6.0%) 89.71 (9.0%) -1.8% ( -15% - 14%) 0.466
OrNotHighLow 1133.39 (4.5%) 1115.07 (4.9%) -1.6% ( -10% - 8%) 0.277
OrHighNotHigh 667.51 (5.2%) 660.80 (4.6%) -1.0% ( -10% - 9%) 0.518
AndHighLow 910.68 (3.6%) 901.61 (3.4%) -1.0% ( -7% - 6%) 0.372
HighTerm 1511.60 (4.0%) 1501.51 (4.1%) -0.7% ( -8% - 7%) 0.600
OrNotHighHigh 655.21 (4.0%) 651.54 (5.6%) -0.6% ( -9% - 9%) 0.718
LowTerm 2193.29 (5.6%) 2183.75 (4.9%) -0.4% ( -10% - 10%) 0.795
OrNotHighMed 789.32 (4.6%) 786.91 (4.2%) -0.3% ( -8% - 8%) 0.826
OrHighNotLow 822.79 (7.0%) 820.98 (5.6%) -0.2% ( -11% - 13%) 0.912
PKLookup 219.75 (4.8%) 219.28 (3.1%) -0.2% ( -7% - 8%) 0.868
BrowseDateTaxoFacets 11.14 (3.8%) 11.13 (3.3%) -0.1% ( -6% - 7%) 0.923
BrowseMonthTaxoFacets 13.50 (3.0%) 13.49 (3.0%) -0.1% ( -5% - 6%) 0.937
BrowseDayOfYearTaxoFacets 11.16 (3.9%) 11.16 (3.4%) -0.1% ( -7% - 7%) 0.958
LowSpanNear 309.94 (2.4%) 309.93 (2.9%) -0.0% ( -5% - 5%) 0.997
LowSloppyPhrase 49.18 (4.3%) 49.18 (4.1%) 0.0% ( -7% - 8%) 0.995
IntNRQ 160.83 (1.1%) 160.84 (1.0%) 0.0% ( -2% - 2%) 0.975
HighSloppyPhrase 49.88 (4.2%) 49.93 (4.0%) 0.1% ( -7% - 8%) 0.942
AndHighMed 290.03 (3.3%) 290.40 (3.4%) 0.1% ( -6% - 7%) 0.904
MedPhrase 373.01 (2.7%) 373.57 (2.9%) 0.2% ( -5% - 5%) 0.865
MedSpanNear 84.29 (2.2%) 84.43 (2.4%) 0.2% ( -4% - 4%) 0.817
HighIntervalsOrdered 6.08 (1.3%) 6.10 (1.0%) 0.2% ( -2% - 2%) 0.552
AndHighHigh 73.50 (4.3%) 73.67 (3.8%) 0.2% ( -7% - 8%) 0.854
Wildcard 234.24 (2.1%) 234.80 (1.6%) 0.2% ( -3% - 3%) 0.680
BrowseDayOfYearSSDVFacets 28.39 (5.4%) 28.48 (5.3%) 0.3% ( -9% - 11%) 0.846
HighPhrase 284.75 (2.0%) 285.69 (2.7%) 0.3% ( -4% - 5%) 0.662
MedSloppyPhrase 75.00 (2.4%) 75.33 (3.2%) 0.4% ( -5% - 6%) 0.628
Respell 95.48 (2.6%) 96.01 (1.7%) 0.6% ( -3% - 4%) 0.415
LowPhrase 129.78 (2.5%) 130.56 (1.8%) 0.6% ( -3% - 5%) 0.385
OrHighNotMed 726.46 (5.3%) 732.29 (4.6%) 0.8% ( -8% - 11%) 0.607
HighSpanNear 308.76 (2.6%) 312.61 (2.1%) 1.2% ( -3% - 6%) 0.098
MedTerm 1689.86 (5.7%) 1715.31 (5.1%) 1.5% ( -8% - 13%) 0.379
TermDTSort 377.99 (6.6%) 387.69 (4.6%) 2.6% ( -8% - 14%) 0.156
BrowseMonthSSDVFacets 31.65 (7.5%) 32.50 (2.3%) 2.7% ( -6% - 13%) 0.127
Fuzzy2 60.11 (14.4%) 61.79 (15.2%) 2.8% ( -23% - 37%) 0.552
HighTermDayOfYearSort 317.71 (13.5%) 329.57 (13.7%) 3.7% ( -20% - 35%) 0.385
HighTermMonthSort 304.28 (14.4%) 316.36 (14.9%) 4.0% ( -22% - 38%) 0.392
HighTermTitleBDVSort 194.65 (13.4%) 202.51 (16.2%) 4.0% ( -22% - 38%) 0.391
```
Overall this seems to actually degrade the performance for certain OrHighHigh queries. However, given the original hypothesis was that BMM would be more effective than BMW for disjunction query with many (5+) clauses, I'm wondering if the benchmark query set needs to be augmented to test for this scenario, as most of them seems to be query with 1 or 2 clauses?
---
Commit: https://github.com/apache/lucene/pull/81/commits/1d9255aecff22cd61f0cf3756f706acef3f24459
(on top of the previous one)
Net changes being compared with baseline:
1. `DisjunctionSumScorer` uses `MaxScoreSumPropagator` for block max related logic
Benchmark result 1:
```
TaskQPS baseline StdDevQPS my_modified_version StdDev Pct diff p-value
OrNotHighMed 723.31 (7.1%) 702.22 (6.5%) -2.9% ( -15% - 11%) 0.176
LowTerm 1675.55 (8.4%) 1634.89 (6.1%) -2.4% ( -15% - 13%) 0.298
MedTerm 1470.24 (6.0%) 1438.45 (5.5%) -2.2% ( -12% - 9%) 0.234
LowPhrase 319.76 (3.7%) 314.75 (4.0%) -1.6% ( -8% - 6%) 0.195
AndHighMed 271.94 (4.5%) 267.76 (2.7%) -1.5% ( -8% - 5%) 0.189
AndHighLow 845.23 (5.5%) 832.50 (3.4%) -1.5% ( -9% - 7%) 0.301
IntNRQ 180.83 (4.9%) 178.25 (5.0%) -1.4% ( -10% - 8%) 0.366
BrowseMonthSSDVFacets 31.16 (1.5%) 30.77 (5.4%) -1.2% ( -8% - 5%) 0.318
OrHighNotHigh 628.85 (4.6%) 623.53 (6.2%) -0.8% ( -11% - 10%) 0.622
OrNotHighLow 1071.07 (2.8%) 1062.75 (4.0%) -0.8% ( -7% - 6%) 0.479
OrHighNotMed 692.64 (5.6%) 688.05 (5.7%) -0.7% ( -11% - 11%) 0.712
OrHighMed 129.14 (4.4%) 128.33 (3.5%) -0.6% ( -8% - 7%) 0.620
Respell 70.87 (5.2%) 70.48 (4.2%) -0.6% ( -9% - 9%) 0.711
OrHighLow 482.16 (5.5%) 479.66 (4.7%) -0.5% ( -10% - 10%) 0.750
OrNotHighHigh 779.58 (5.6%) 775.63 (5.8%) -0.5% ( -11% - 11%) 0.777
Wildcard 210.85 (5.4%) 209.91 (3.3%) -0.4% ( -8% - 8%) 0.752
AndHighHigh 169.04 (4.5%) 168.37 (1.8%) -0.4% ( -6% - 6%) 0.713
HighSpanNear 31.43 (2.3%) 31.32 (2.7%) -0.4% ( -5% - 4%) 0.655
BrowseDayOfYearSSDVFacets 27.49 (2.5%) 27.41 (1.8%) -0.3% ( -4% - 4%) 0.671
MedPhrase 48.70 (3.8%) 48.57 (3.8%) -0.3% ( -7% - 7%) 0.830
LowSpanNear 107.69 (2.3%) 107.46 (1.5%) -0.2% ( -3% - 3%) 0.735
PKLookup 209.57 (3.9%) 209.19 (3.0%) -0.2% ( -6% - 6%) 0.869
BrowseDayOfYearTaxoFacets 10.77 (2.7%) 10.76 (2.8%) -0.1% ( -5% - 5%) 0.907
Prefix3 180.75 (4.3%) 180.57 (5.3%) -0.1% ( -9% - 9%) 0.948
HighIntervalsOrdered 47.54 (1.7%) 47.51 (1.9%) -0.1% ( -3% - 3%) 0.926
BrowseDateTaxoFacets 10.75 (2.7%) 10.75 (2.8%) 0.0% ( -5% - 5%) 0.999
LowSloppyPhrase 18.25 (3.7%) 18.26 (3.7%) 0.1% ( -7% - 7%) 0.954
OrHighNotLow 676.54 (6.0%) 677.12 (5.9%) 0.1% ( -11% - 12%) 0.963
Fuzzy1 77.57 (9.9%) 77.68 (5.1%) 0.1% ( -13% - 16%) 0.955
MedSloppyPhrase 221.01 (4.5%) 221.37 (3.0%) 0.2% ( -7% - 8%) 0.895
HighTerm 997.87 (5.9%) 1000.31 (4.0%) 0.2% ( -9% - 10%) 0.878
BrowseMonthTaxoFacets 12.93 (4.1%) 12.96 (3.9%) 0.3% ( -7% - 8%) 0.837
MedSpanNear 254.30 (3.1%) 255.22 (3.6%) 0.4% ( -6% - 7%) 0.735
HighPhrase 262.59 (4.1%) 263.83 (4.2%) 0.5% ( -7% - 9%) 0.719
OrHighHigh 63.98 (3.6%) 64.34 (1.7%) 0.6% ( -4% - 6%) 0.526
HighSloppyPhrase 20.17 (5.8%) 20.29 (6.5%) 0.6% ( -11% - 13%) 0.746
TermDTSort 431.77 (12.0%) 437.67 (14.7%) 1.4% ( -22% - 31%) 0.747
HighTermTitleBDVSort 196.74 (14.0%) 201.01 (17.3%) 2.2% ( -25% - 38%) 0.663
HighTermDayOfYearSort 210.49 (10.4%) 215.84 (12.2%) 2.5% ( -18% - 28%) 0.478
HighTermMonthSort 191.43 (11.2%) 196.72 (11.9%) 2.8% ( -18% - 29%) 0.451
Fuzzy2 80.25 (22.5%) 84.12 (19.1%) 4.8% ( -30% - 59%) 0.464
```
Benchmark result 2:
```
TaskQPS baseline StdDevQPS my_modified_version StdDev Pct diff p-value
TermDTSort 470.25 (12.5%) 458.13 (12.3%) -2.6% ( -24% - 25%) 0.511
OrNotHighHigh 665.88 (5.0%) 654.36 (5.5%) -1.7% ( -11% - 9%) 0.298
MedTerm 1607.39 (3.2%) 1581.79 (3.6%) -1.6% ( -8% - 5%) 0.137
BrowseDateTaxoFacets 11.20 (3.6%) 11.08 (4.0%) -1.1% ( -8% - 6%) 0.380
BrowseDayOfYearTaxoFacets 11.22 (3.6%) 11.10 (4.0%) -1.0% ( -8% - 6%) 0.409
MedSloppyPhrase 70.48 (3.4%) 69.80 (3.1%) -1.0% ( -7% - 5%) 0.344
HighTerm 1973.72 (5.5%) 1956.05 (4.2%) -0.9% ( -10% - 9%) 0.565
OrNotHighMed 671.95 (3.7%) 666.09 (3.5%) -0.9% ( -7% - 6%) 0.447
HighSloppyPhrase 16.48 (4.9%) 16.38 (5.3%) -0.6% ( -10% - 10%) 0.710
BrowseMonthTaxoFacets 13.17 (2.6%) 13.12 (2.8%) -0.4% ( -5% - 5%) 0.630
OrHighMed 126.70 (2.6%) 126.20 (3.1%) -0.4% ( -5% - 5%) 0.665
HighIntervalsOrdered 107.19 (2.8%) 106.94 (3.2%) -0.2% ( -6% - 5%) 0.808
PKLookup 214.60 (2.8%) 214.20 (2.5%) -0.2% ( -5% - 5%) 0.826
MedPhrase 311.36 (2.8%) 311.17 (2.8%) -0.1% ( -5% - 5%) 0.947
LowTerm 1678.94 (3.6%) 1678.44 (3.0%) -0.0% ( -6% - 6%) 0.977
LowPhrase 175.97 (2.8%) 175.99 (2.2%) 0.0% ( -4% - 5%) 0.991
HighPhrase 111.89 (2.4%) 111.92 (2.3%) 0.0% ( -4% - 4%) 0.977
IntNRQ 118.64 (1.8%) 118.72 (1.2%) 0.1% ( -2% - 3%) 0.890
HighTermTitleBDVSort 357.95 (13.7%) 358.35 (10.0%) 0.1% ( -20% - 27%) 0.977
OrHighNotHigh 757.69 (5.2%) 758.65 (3.9%) 0.1% ( -8% - 9%) 0.930
HighSpanNear 110.48 (2.5%) 110.62 (2.8%) 0.1% ( -5% - 5%) 0.874
BrowseMonthSSDVFacets 31.78 (6.1%) 31.83 (4.8%) 0.2% ( -10% - 11%) 0.928
OrHighHigh 44.44 (2.6%) 44.51 (2.1%) 0.2% ( -4% - 4%) 0.818
LowSloppyPhrase 160.78 (2.6%) 161.10 (2.9%) 0.2% ( -5% - 5%) 0.824
LowSpanNear 203.85 (2.5%) 204.30 (2.6%) 0.2% ( -4% - 5%) 0.782
Respell 83.36 (2.6%) 83.57 (1.9%) 0.2% ( -4% - 4%) 0.731
OrHighNotLow 748.89 (5.7%) 750.79 (5.3%) 0.3% ( -10% - 11%) 0.884
BrowseDayOfYearSSDVFacets 28.38 (1.6%) 28.45 (1.6%) 0.3% ( -2% - 3%) 0.605
OrNotHighLow 812.05 (5.4%) 814.66 (4.5%) 0.3% ( -9% - 10%) 0.837
HighTermMonthSort 269.01 (10.3%) 270.01 (9.5%) 0.4% ( -17% - 22%) 0.906
OrHighNotMed 789.92 (4.1%) 793.28 (5.8%) 0.4% ( -9% - 10%) 0.789
HighTermDayOfYearSort 242.21 (15.3%) 243.29 (14.5%) 0.4% ( -25% - 35%) 0.925
Prefix3 183.78 (3.0%) 184.64 (2.4%) 0.5% ( -4% - 6%) 0.588
MedSpanNear 50.84 (2.7%) 51.10 (2.8%) 0.5% ( -4% - 6%) 0.568
AndHighHigh 112.79 (3.1%) 113.39 (3.2%) 0.5% ( -5% - 7%) 0.595
AndHighLow 1030.25 (5.1%) 1036.81 (3.9%) 0.6% ( -7% - 10%) 0.658
Wildcard 173.40 (2.2%) 174.60 (1.9%) 0.7% ( -3% - 4%) 0.294
OrHighLow 525.51 (6.2%) 533.08 (5.4%) 1.4% ( -9% - 13%) 0.431
AndHighMed 395.02 (3.2%) 402.82 (2.9%) 2.0% ( -4% - 8%) 0.041
Fuzzy1 62.59 (11.0%) 64.03 (11.3%) 2.3% ( -17% - 27%) 0.514
Fuzzy2 56.62 (15.7%) 58.05 (13.7%) 2.5% ( -23% - 37%) 0.586
```
Overall there's no significant improvement, presumably it's because with only changes in `DisjunctionSumScorer`, `WANDScorer` still handles all the queries with ScoreMode.TOP_SCORES for disjunction.
What do you think about the changes and the benchmark results? Anything else I can try next?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@lucene.apache.org
For additional commands, e-mail: issues-help@lucene.apache.org