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

Koji Sekiguchi updated LUCENE-2686:
-----------------------------------

    Attachment: Test2LUCENE2590.java

Thanks Mike for opening this!

The attached program is what I want to do - I'd like to know which field a 
match occurred. TestSubScorerFreqs of LUCENE-2590 calls BooleanScorer2.freq() 
and it returns expected freq count. In my program, I get TermScorer from 
BooleanScorer2 via ScorerVisitor and try to call TermScorer.freq() in collect() 
method:

{code}
public void collect(int doc) throws IOException {
  int freq = 0;
  for( TermQueryScorer tqs : tqsSet ){
    Scorer scorer = tqs.scorer;
    int matchId = scorer.docID();    // matchId isn't expected
    if( matchId == doc ){
      freq += scorer.freq();              // this line is never executed
    }
  }
  docCounts.put(doc + docBase, freq);
  collector.collect(doc);
}
{code}

but TermScorer.docID() returns unexpected id and TermScorer.freq() isn't 
executed (even if I remove "matchId == doc" condition, TermScorer.freq() 
returns unexpected number anyway).

> DisjunctionSumScorer should not call .score on sub scorers until consumer 
> calls .score
> --------------------------------------------------------------------------------------
>
>                 Key: LUCENE-2686
>                 URL: https://issues.apache.org/jira/browse/LUCENE-2686
>             Project: Lucene - Java
>          Issue Type: Bug
>          Components: Search
>            Reporter: Michael McCandless
>             Fix For: 3.1, 4.0
>
>         Attachments: Test2LUCENE2590.java
>
>
> Spinoff from java-user thread "question about Scorer.freq()" from Koji...
> BooleanScorer2 uses DisjunctionSumScorer to score only-SHOULD-clause boolean 
> queries.
> But, this scorer does too much work for collectors that never call .score, 
> because it scores while it's matching.  It should only call .score on the 
> subs when the caller calls its .score.
> This also has the side effect of messing up advanced collectors that gather 
> the freq() of the subs (using LUCENE-2590).

-- 
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-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to