You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@lucene.apache.org by "jpountz (via GitHub)" <gi...@apache.org> on 2023/09/25 14:48:36 UTC
[GitHub] [lucene] jpountz opened a new pull request, #12589: Sometimes intersect the essential clause and the best non-essential clause.
jpountz opened a new pull request, #12589:
URL: https://github.com/apache/lucene/pull/12589
The idea behind MAXSCORE is to run disjunctions as `+(essentialClause1 ... essentialClauseM) nonEssentialClause1 ... nonEssentialClauseN`, moving more and more clauses from the essential list to the non-essential list as the minimum competitive score increases. For instance, a query such as `the book of life` which I found in the Tantivy benchmark ends up running as `+book the of life` after some time, ie. with one required clause and other clauses optional. This is because matching `the`, `of` and `life` alone is not good enough for yielding a match.
Here some statistics in that case:
- min competitive score: 3.4781857
- max_window_score(book): 2.8796153
- max_window_score(life): 2.037863
- max_window_score(the): 0.103848875
- max_window_score(of): 0.19427927
Actually if you look at these statistics, we could do better, because a match may only be competitive if it matches both `book` and `life`, so this query could actually execute as `+book +life the of`, which may help evaluate fewer documents compared to `+book the of life`. Especially if you enable recursive graph bisection.
This is what this PR tries to achieve: in the event when there is a single essential clause and matching all clauses but the best non-essential clause cannot produce a competitive match, then the scorer will only evaluate documents that match the intersection of the essential clause and the best non-essential clause.
It's worth noting that this optimization would kick in very frequently on 2-clauses disjunctions.
--
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.
To unsubscribe, e-mail: issues-unsubscribe@lucene.apache.org
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
Re: [PR] Sometimes intersect the essential clause and the best non-essential clause. [lucene]
Posted by "jpountz (via GitHub)" <gi...@apache.org>.
jpountz commented on PR #12589:
URL: https://github.com/apache/lucene/pull/12589#issuecomment-1768020392
Updated luceneutil results using wikibigall:
```
TaskQPS baseline StdDevQPS my_modified_version StdDev Pct diff p-value
Wildcard 61.99 (4.0%) 61.33 (4.1%) -1.1% ( -8% - 7%) 0.408
HighTermMonthSort 4984.72 (2.3%) 4942.50 (2.6%) -0.8% ( -5% - 4%) 0.272
Prefix3 230.04 (3.7%) 229.11 (3.5%) -0.4% ( -7% - 7%) 0.720
Respell 81.35 (1.4%) 81.25 (2.0%) -0.1% ( -3% - 3%) 0.816
CountAndHighHigh 40.98 (4.2%) 40.97 (3.9%) -0.0% ( -7% - 8%) 0.981
CountTerm 16343.93 (4.0%) 16345.74 (4.3%) 0.0% ( -7% - 8%) 0.993
CountPhrase 4.46 (3.5%) 4.46 (4.1%) 0.0% ( -7% - 7%) 0.980
HighTermDayOfYearSort 238.80 (1.4%) 238.88 (1.4%) 0.0% ( -2% - 2%) 0.938
PKLookup 223.95 (2.1%) 224.09 (2.1%) 0.1% ( -4% - 4%) 0.925
CountAndHighMed 123.80 (3.9%) 123.90 (3.4%) 0.1% ( -6% - 7%) 0.943
CountOrHighHigh 57.72 (17.0%) 57.92 (17.7%) 0.3% ( -29% - 42%) 0.950
AndHighLow 1006.20 (3.0%) 1010.52 (2.7%) 0.4% ( -5% - 6%) 0.632
CountOrHighMed 89.50 (16.7%) 89.90 (17.5%) 0.4% ( -28% - 41%) 0.934
AndHighHigh 64.48 (3.6%) 64.85 (3.4%) 0.6% ( -6% - 7%) 0.608
AndHighMed 146.96 (3.5%) 147.93 (3.2%) 0.7% ( -5% - 7%) 0.530
LowTerm 994.04 (5.9%) 1008.50 (5.9%) 1.5% ( -9% - 14%) 0.434
Fuzzy1 150.93 (1.1%) 153.62 (2.0%) 1.8% ( -1% - 4%) 0.000
MedTerm 629.58 (6.2%) 641.76 (6.2%) 1.9% ( -9% - 15%) 0.324
MedPhrase 28.07 (5.7%) 28.62 (3.6%) 1.9% ( -6% - 11%) 0.201
Fuzzy2 107.70 (0.9%) 109.90 (1.7%) 2.0% ( 0% - 4%) 0.000
LowPhrase 26.51 (6.3%) 27.15 (5.2%) 2.4% ( -8% - 14%) 0.184
HighPhrase 40.05 (6.5%) 41.02 (3.7%) 2.4% ( -7% - 13%) 0.147
IntNRQ 128.31 (15.0%) 131.43 (17.3%) 2.4% ( -25% - 40%) 0.636
HighTerm 399.42 (7.4%) 409.65 (8.0%) 2.6% ( -11% - 19%) 0.293
OrHighLow 647.57 (3.4%) 668.35 (3.6%) 3.2% ( -3% - 10%) 0.004
OrHighMed 143.30 (5.0%) 163.00 (6.1%) 13.7% ( 2% - 26%) 0.000
OrHighHigh 56.47 (6.2%) 64.35 (7.8%) 14.0% ( 0% - 29%) 0.000
```
--
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.
To unsubscribe, e-mail: issues-unsubscribe@lucene.apache.org
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
Re: [PR] Sometimes intersect the essential clause and the best non-essential clause. [lucene]
Posted by "jpountz (via GitHub)" <gi...@apache.org>.
jpountz commented on PR #12589:
URL: https://github.com/apache/lucene/pull/12589#issuecomment-1767952830
I moved the optimization as part of the partitioning logic so that it's easier to test. It's ready for review.
--
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.
To unsubscribe, e-mail: issues-unsubscribe@lucene.apache.org
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
Re: [PR] Sometimes intersect the essential clause and the best non-essential clause. [lucene]
Posted by "wurui90 (via GitHub)" <gi...@apache.org>.
wurui90 commented on PR #12589:
URL: https://github.com/apache/lucene/pull/12589#issuecomment-2359243271
Hi Adrien, for this sentence: "moving more and more clauses from the essential list to the non-essential list as the minimum competitive score increases. " Is it actually moving more clauses from _non-essential_ list to _essential_ list?
--
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.
To unsubscribe, e-mail: issues-unsubscribe@lucene.apache.org
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
Re: [PR] Sometimes intersect the essential clause and the best non-essential clause. [lucene]
Posted by "jpountz (via GitHub)" <gi...@apache.org>.
jpountz commented on PR #12589:
URL: https://github.com/apache/lucene/pull/12589#issuecomment-2404503497
No, the sentence is correct. Non essential clauses are clauses that cannot produce a match on their own because the score wouldn't be high enough. So the more non-essential clauses, the better. When the query starts processing, all clauses are initially essential.
--
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.
To unsubscribe, e-mail: issues-unsubscribe@lucene.apache.org
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
Re: [PR] Sometimes intersect the essential clause and the best non-essential clause. [lucene]
Posted by "jpountz (via GitHub)" <gi...@apache.org>.
jpountz commented on PR #12589:
URL: https://github.com/apache/lucene/pull/12589#issuecomment-1775098957
I plan on merging in the next couple days if there are no objections.
--
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.
To unsubscribe, e-mail: issues-unsubscribe@lucene.apache.org
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
Re: [PR] Sometimes intersect the essential clause and the best non-essential clause. [lucene]
Posted by "jpountz (via GitHub)" <gi...@apache.org>.
jpountz merged PR #12589:
URL: https://github.com/apache/lucene/pull/12589
--
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.
To unsubscribe, e-mail: issues-unsubscribe@lucene.apache.org
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
[GitHub] [lucene] jpountz commented on pull request #12589: Sometimes intersect the essential clause and the best non-essential clause.
Posted by "jpountz (via GitHub)" <gi...@apache.org>.
jpountz commented on PR #12589:
URL: https://github.com/apache/lucene/pull/12589#issuecomment-1733875246
Opening as a draft as I still need to figure out how to test this optimization.
I tested on wikibigall where this yielded a good speedup. I would expect an even better speedup if recursive graph bisection is enabled.
```
TaskQPS baseline StdDevQPS my_modified_version StdDev Pct diff p-value
CountOrHighHigh 59.20 (15.6%) 57.96 (14.8%) -2.1% ( -28% - 33%) 0.671
CountOrHighMed 91.87 (15.6%) 90.04 (14.7%) -2.0% ( -27% - 33%) 0.684
MedTerm 451.03 (9.1%) 446.68 (8.1%) -1.0% ( -16% - 17%) 0.730
LowTerm 751.75 (8.3%) 744.56 (7.1%) -1.0% ( -15% - 15%) 0.703
MedPhrase 40.42 (7.8%) 40.05 (7.9%) -0.9% ( -15% - 16%) 0.717
HighTerm 339.69 (10.6%) 337.52 (9.5%) -0.6% ( -18% - 21%) 0.844
HighPhrase 35.00 (6.4%) 34.82 (6.7%) -0.5% ( -12% - 13%) 0.809
AndHighHigh 63.82 (4.2%) 63.55 (2.9%) -0.4% ( -7% - 7%) 0.721
AndHighMed 182.62 (3.6%) 181.94 (2.4%) -0.4% ( -6% - 5%) 0.705
LowPhrase 41.82 (4.8%) 41.69 (5.6%) -0.3% ( -10% - 10%) 0.848
HighTermDayOfYearSort 234.81 (1.5%) 234.33 (1.8%) -0.2% ( -3% - 3%) 0.697
AndHighLow 823.51 (3.2%) 821.97 (2.6%) -0.2% ( -5% - 5%) 0.846
OrHighLow 630.34 (2.9%) 630.52 (3.9%) 0.0% ( -6% - 6%) 0.979
Respell 66.16 (1.4%) 66.19 (1.7%) 0.0% ( -2% - 3%) 0.938
Fuzzy1 128.80 (1.4%) 128.97 (1.5%) 0.1% ( -2% - 3%) 0.777
CountAndHighMed 123.28 (2.8%) 123.60 (3.6%) 0.3% ( -5% - 6%) 0.803
Fuzzy2 114.67 (1.3%) 114.97 (1.5%) 0.3% ( -2% - 3%) 0.567
CountPhrase 3.38 (9.0%) 3.39 (9.3%) 0.3% ( -16% - 20%) 0.918
CountAndHighHigh 40.81 (2.8%) 40.96 (3.8%) 0.4% ( -6% - 7%) 0.742
PKLookup 224.07 (2.3%) 225.12 (2.7%) 0.5% ( -4% - 5%) 0.566
Wildcard 144.23 (2.4%) 145.22 (3.1%) 0.7% ( -4% - 6%) 0.451
HighTermMonthSort 5090.41 (2.8%) 5142.25 (4.2%) 1.0% ( -5% - 8%) 0.384
Prefix3 241.24 (4.3%) 244.33 (4.4%) 1.3% ( -7% - 10%) 0.368
CountTerm 17070.19 (5.1%) 17289.73 (4.9%) 1.3% ( -8% - 11%) 0.429
IntNRQ 88.47 (11.5%) 89.76 (13.8%) 1.5% ( -21% - 30%) 0.725
OrHighMed 191.58 (3.5%) 206.42 (3.7%) 7.7% ( 0% - 15%) 0.000
OrHighHigh 60.88 (4.4%) 68.91 (4.4%) 13.2% ( 4% - 23%) 0.000
```
--
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.
To unsubscribe, e-mail: issues-unsubscribe@lucene.apache.org
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