You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Adrien Grand (JIRA)" <ji...@apache.org> on 2015/12/03 20:39:11 UTC

[jira] [Updated] (LUCENE-6815) Should DisjunctionScorer advance more lazily?

     [ https://issues.apache.org/jira/browse/LUCENE-6815?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Adrien Grand updated LUCENE-6815:
---------------------------------
    Attachment: LUCENE-6815.patch

Updated patch. This now leverages the new matchCost() API in order to match sub scorers by order of cost. Unfortunately regular disjunctions get a bit slower with this patch:

(bulk scoring has been disabled for this run)
{noformat}
                    TaskQPS baseline      StdDev   QPS patch      StdDev                Pct diff
               OrHighLow       60.64      (4.8%)       57.41      (4.0%)   -5.3% ( -13% -    3%)
              OrHighHigh       17.07      (4.2%)       16.27      (3.5%)   -4.7% ( -11% -    3%)
               OrHighMed       66.59      (5.1%)       63.57      (3.6%)   -4.5% ( -12% -    4%)
                  Fuzzy1       52.48      (6.8%)       51.35      (8.0%)   -2.2% ( -15% -   13%)
                  Fuzzy2       61.04     (19.3%)       59.90     (18.5%)   -1.9% ( -33% -   44%)
           OrHighNotHigh       65.22      (2.7%)       64.84      (3.4%)   -0.6% (  -6% -    5%)
            OrHighNotMed       50.97      (3.8%)       50.71      (4.1%)   -0.5% (  -8% -    7%)
                HighTerm       68.99      (3.7%)       68.64      (4.0%)   -0.5% (  -7% -    7%)
            OrNotHighMed      238.28      (2.3%)      237.43      (2.7%)   -0.4% (  -5% -    4%)
                 LowTerm      667.00      (5.0%)      664.74      (5.5%)   -0.3% ( -10% -   10%)
             AndHighHigh       33.10      (1.4%)       33.01      (1.7%)   -0.3% (  -3% -    2%)
                 MedTerm      185.93      (3.5%)      185.42      (3.8%)   -0.3% (  -7% -    7%)
                Wildcard       40.77      (3.8%)       40.67      (4.6%)   -0.2% (  -8% -    8%)
              HighPhrase       38.55      (2.7%)       38.48      (2.6%)   -0.2% (  -5% -    5%)
            OrHighNotLow       37.43      (3.7%)       37.38      (4.4%)   -0.1% (  -7% -    8%)
        HighSloppyPhrase       17.66      (2.6%)       17.64      (2.6%)   -0.1% (  -5% -    5%)
               LowPhrase       48.82      (1.1%)       48.81      (1.8%)   -0.0% (  -2% -    2%)
            HighSpanNear       13.84      (2.8%)       13.83      (2.7%)   -0.0% (  -5% -    5%)
           OrNotHighHigh       55.47      (2.5%)       55.53      (2.3%)    0.1% (  -4% -    4%)
               MedPhrase      167.70      (3.0%)      167.86      (3.5%)    0.1% (  -6% -    6%)
         MedSloppyPhrase       30.44      (1.7%)       30.49      (1.7%)    0.2% (  -3% -    3%)
         LowSloppyPhrase       72.06      (1.5%)       72.23      (1.2%)    0.2% (  -2% -    3%)
             LowSpanNear       23.84      (2.2%)       23.96      (2.5%)    0.5% (  -4% -    5%)
                  IntNRQ        8.14      (5.3%)        8.19      (5.5%)    0.5% (  -9% -   12%)
              AndHighMed      216.29      (1.8%)      217.53      (1.8%)    0.6% (  -2% -    4%)
              AndHighLow      882.75      (7.1%)      887.86      (9.3%)    0.6% ( -14% -   18%)
             MedSpanNear       47.85      (2.9%)       48.14      (3.0%)    0.6% (  -5% -    6%)
                 Prefix3       33.98      (3.9%)       34.22      (4.0%)    0.7% (  -6% -    8%)
            OrNotHighLow      757.50      (5.0%)      763.60      (5.5%)    0.8% (  -9% -   11%)
                 Respell       61.43      (3.3%)       61.94      (2.7%)    0.8% (  -5% -    7%)
{noformat}

I'll look into how I can fix it.

> Should DisjunctionScorer advance more lazily?
> ---------------------------------------------
>
>                 Key: LUCENE-6815
>                 URL: https://issues.apache.org/jira/browse/LUCENE-6815
>             Project: Lucene - Core
>          Issue Type: Improvement
>            Reporter: Adrien Grand
>            Assignee: Adrien Grand
>            Priority: Minor
>         Attachments: LUCENE-6815.patch, LUCENE-6815.patch
>
>
> Today if you call DisjunctionScorer.advance(X), it will try to advance all sub scorers to X. However, if DisjunctionScorer is being intersected with another scorer (which is almost always the case as we use BooleanScorer for top-level disjunctions), we could stop as soon as we find one matching sub scorer, and only advance the remaining sub scorers when freq() or score() is called. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org