You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by Shawn Heisey <so...@elyograg.org> on 2013/02/13 16:38:42 UTC

Possible Solr optimization - not calculating score when sorting

Putting my last email together about new Lucene features in Solr has led 
to an unrelated question:

If you have a sort parameter that does not include score, and you don't 
request score on the fl parameter, is Solr smart enough to not bother 
calculating it or applying boosts, especially with distributed search? 
I have a boost parameter using a few mathematical functions in my 
edismax handler definition.  I'd rather not have that calculation 
performed if it will never be used.

A quick test with with shards.info and debugQuery=true suggests that 
this is NOT the case.  The maxScore field in shards.info is blank 
whether debugQuery is there or not, but with debugQuery, the full score 
calculation is present under explain.  I can't tell if the calculation 
is made just because I requested the debug.  It would be good (IMHO) if 
the calculation were skipped entirely when sorting on fields other than 
score, even when debugQuery=true.

Are such optimizations already in place when debugQuery=false?  If not, 
I can open an issue.

Thanks,
Shawn

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


Re: Possible Solr optimization - not calculating score when sorting

Posted by Yonik Seeley <yo...@lucidworks.com>.
On Wed, Feb 13, 2013 at 10:38 AM, Shawn Heisey <so...@elyograg.org> wrote:
> If you have a sort parameter that does not include score, and you don't
> request score on the fl parameter, is Solr smart enough to not bother
> calculating it

In general, yes, but it can somewhat rely on the implementation of
specific queries.

> I
> have a boost parameter using a few mathematical functions in my edismax
> handler definition.  I'd rather not have that calculation performed if it
> will never be used.

In this specific case, the answer is definitely yes.  The function for
a boosted query will only be evaluated in the score() method, which is
only called if you need scores.

> but with debugQuery, the full score calculation is present
> under explain.  I can't tell if the calculation is made just because I
> requested the debug.

It is.


-Yonik
http://lucidworks.com

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