You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Mark Miller (JIRA)" <ji...@apache.org> on 2009/08/11 02:16:14 UTC

[jira] Commented: (LUCENE-1087) MultiSearcher.explain returns incorrect score/explanation relating to docFreq

    [ https://issues.apache.org/jira/browse/LUCENE-1087?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12741636#action_12741636 ] 

Mark Miller commented on LUCENE-1087:
-------------------------------------

Not sure how to fix this, but I think LUCENE-1771 will make it a bit easier - if we can just get the multi searcher passed as the searcher to explain(searcher, reader, doc), it would pull the right numbers.

Not sure how to do that though - as it is, it looks like explain on MultiSearcher is going to get left out in the cold - MultiSearcher works with Searchables, but Searchable#explain is deprecated with the replacement on Searcher. Thats trouble for MultiSearcher#explain.

> MultiSearcher.explain returns incorrect score/explanation relating to docFreq
> -----------------------------------------------------------------------------
>
>                 Key: LUCENE-1087
>                 URL: https://issues.apache.org/jira/browse/LUCENE-1087
>             Project: Lucene - Java
>          Issue Type: Bug
>          Components: Query/Scoring
>    Affects Versions: 2.2
>         Environment: No special hardware required to reproduce the issue.
>            Reporter: Yasoja Seneviratne
>            Priority: Minor
>
> Creating 2 different indexes, searching  each individually and print score details and compare to searching both indexes with MulitSearcher and printing score details.  
>  
> The "docFreq" value printed isn't correct - the values it prints are as if each index was searched individually.
> Code is like:
> {code}
> MultiSearcher multi = new MultiSearcher(searchables);
> Hits hits = multi.search(query);
> for(int i=0; i<hits.length(); i++)
> {
>   Explanation expl = multi.explain(query, hits.id(i));
>   System.out.println(expl.toString());
> }
> {code}
> I raised this in the Lucene user mailing list and was advised to log a bug, email thread given below.
> {noformat} 
> -----Original Message-----
> From: Chris Hostetter  
> Sent: Friday, December 07, 2007 10:30 PM
> To: java-user
> Subject: Re: does the MultiSearcher class calculate IDF properly?
> a quick glance at the code seems to indicate that MultiSearcher has code 
> for calcuating the docFreq accross all of the Searchables when searching 
> (or when the docFreq method is explicitly called) but that explain method 
> just delegates to Searchable that the specific docid came from.
> if you compare that Explanation score you got with the score returned by 
> a HitCollector (or TopDocs) they probably won't match.
> So i would say "yes MultiSearcher calculates IDF properly, but 
> MultiSeracher.explain is broken.  Please file a bug about this, i can't 
> think of an easy way to fix it, but it certianly seems broken to me.
> : Subject: does the MultiSearcher class calculate IDF properly?
> : 
> : I tried the following.  Creating 2 different indexes, search each
> : individually and print score details and compare to searching both
> : indexes with MulitSearcher and printing score details.  
> : 
> : The "docFreq" value printed don't seem right - is this just a problem
> : with using Explain together with the MultiSearcher?
> : 
> : 
> : Code is like:
> : MultiSearcher multi = new MultiSearcher(searchables);
> : Hits hits = multi.search(query);
> : for(int i=0; i<hits.length(); i++)
> : {
> :   Explanation expl = multi.explain(query, hits.id(i));
> :   System.out.println(expl.toString());
> : }
> : 
> : 
> : Output:
> : id = 14 score = 0.071
> : 0.07073946 = (MATCH) fieldWeight(contents:climate in 2), product of:
> :   1.0 = tf(termFreq(contents:climate)=1)
> :   1.8109303 = idf(docFreq=1)
> :   0.0390625 = fieldNorm(field=contents, doc=2)
> {noformat} 

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