You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@solr.apache.org by Alessandro Benedetti <a....@sease.io> on 2021/12/02 16:40:12 UTC

Re: Unuseful block of code in ltr module

Adding Christine and Diego to the loop if they missed this.
Thanks Anna for raising.

Cheers
--------------------------
Alessandro Benedetti
Apache Lucene/Solr Committer
Director, R&D Software Engineer, Search Consultant

www.sease.io


On Wed, 10 Nov 2021 at 16:41, Anna Ruggero <a....@sease.io> wrote:

> Hi all,
>
> I was looking at the *org.apache.solr.ltr.LTRRescorer#scoreFeatures *
> method.
> Since we are using reranking applied to some topN documents (rerankDocs
> parameter) I think that this block of code in *org.apache.solr.ltr.LTRRescorer#scoreSingleHit
> *will never be accessed:
>
> if (hitUpto >= topN) {
>   // once that heap is ready, if the score of this document is lower that
>   // the minimum
>   // i don't want to log the feature. Otherwise I replace it with the
>   // minimum and fix the
>   // heap.
>   if (hit.score > reranked[0].score) {
>     reranked[0] = hit;
>     heapAdjust(reranked, topN, 0);
>     if (featureLogger != null && indexSearcher instanceof SolrIndexSearcher) {
>       featureLogger.log(hit.doc, rerankingQuery, (SolrIndexSearcher) indexSearcher,
>           modelWeight.getFeaturesInfo());
>     }
>   }
>
> Since we are reranking the topN documents. the *hits.length* in the
> scoreFeatures method is always *equal* to the *topN* variable.
> Therefore, since *hitUpto* is going from *0* to *hits.length -1*, we will
> never have *hitUpto >= topN*
>
> Is there any condition I am missing?
> Couldn't this piece of code be removed?
>
> Thank you,
> Anna
>

Re: Unuseful block of code in ltr module

Posted by Diego Ceccarelli <di...@gmail.com>.
Hi, I had a quick look and it seems that Anna is right, but there should be
a case where you ask to rerank more documents than what you want to see..
need to review the code :)

cheers,
Diego




On Thu, 2 Dec 2021, 16:40 Alessandro Benedetti, <a....@sease.io>
wrote:

> Adding Christine and Diego to the loop if they missed this.
> Thanks Anna for raising.
>
> Cheers
> --------------------------
> Alessandro Benedetti
> Apache Lucene/Solr Committer
> Director, R&D Software Engineer, Search Consultant
>
> www.sease.io
>
>
> On Wed, 10 Nov 2021 at 16:41, Anna Ruggero <a....@sease.io> wrote:
>
>> Hi all,
>>
>> I was looking at the *org.apache.solr.ltr.LTRRescorer#scoreFeatures *
>> method.
>> Since we are using reranking applied to some topN documents (rerankDocs
>> parameter) I think that this block of code in *org.apache.solr.ltr.LTRRescorer#scoreSingleHit
>> *will never be accessed:
>>
>> if (hitUpto >= topN) {
>>   // once that heap is ready, if the score of this document is lower that
>>   // the minimum
>>   // i don't want to log the feature. Otherwise I replace it with the
>>   // minimum and fix the
>>   // heap.
>>   if (hit.score > reranked[0].score) {
>>     reranked[0] = hit;
>>     heapAdjust(reranked, topN, 0);
>>     if (featureLogger != null && indexSearcher instanceof SolrIndexSearcher) {
>>       featureLogger.log(hit.doc, rerankingQuery, (SolrIndexSearcher) indexSearcher,
>>           modelWeight.getFeaturesInfo());
>>     }
>>   }
>>
>> Since we are reranking the topN documents. the *hits.length* in the
>> scoreFeatures method is always *equal* to the *topN* variable.
>> Therefore, since *hitUpto* is going from *0* to *hits.length -1*, we
>> will never have *hitUpto >= topN*
>>
>> Is there any condition I am missing?
>> Couldn't this piece of code be removed?
>>
>> Thank you,
>> Anna
>>
>