You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Robert Muir (JIRA)" <ji...@apache.org> on 2011/01/23 16:12:43 UTC

[jira] Updated: (LUCENE-2880) SpanQuery scoring inconsistencies

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

Robert Muir updated LUCENE-2880:
--------------------------------

    Attachment: LUCENE-2880.patch

Here's a quickly hacked up patch (core tests pass, but i didnt go fixing contrib, etc yet).

Its just to get ideas.

The approach I took was for SpanQuery to have a new method:
{noformat}
  /** 
   * Returns the length (number of positions) in the query.
   * <p>
   * For example, for a simple Term this is 1.
   * For a NEAR of "foo" and "bar" this is 2.
   * This is used by SpanScorer to compute the appropriate slop factor,
   * so that SpanQueries score consistently with other queries.
   */
  public abstract int getLength();
{noformat}

This is called once by the Weight, and passed to SpanScorer.

Then SpanScorer computes the slop as:
{noformat}
int matchLength = (spans.end() - spans.start()) - queryLength;
{noformat}
instead of:
{noformat}
int matchLength = spans.end() - spans.start();
{noformat}


> SpanQuery scoring inconsistencies
> ---------------------------------
>
>                 Key: LUCENE-2880
>                 URL: https://issues.apache.org/jira/browse/LUCENE-2880
>             Project: Lucene - Java
>          Issue Type: Bug
>            Reporter: Robert Muir
>             Fix For: 4.0
>
>         Attachments: LUCENE-2880.patch
>
>
> Spinoff of LUCENE-2879.
> You can see a full description there, but the gist is that SpanQuery sums up freqs with "sloppyFreq".
> However this slop is simply spans.end() - spans.start()
> For a SpanTermQuery for example, this means its scoring 0.5 for TF versus TermQuery's 1.0.
> As you can imagine, I think in practical situations this would make it difficult for SpanQuery users to
> really use SpanQueries for effective ranking, especially in combination with non-Spanqueries (maybe via DisjunctionMaxQuery, etc)
> The problem is more general than this simple example: for example SpanNearQuery should be consistent with PhraseQuery's slop.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


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