Hi all,

I'm noticing an issue where rerank queries never appear to enter the Solr
queryResultCache

You can notice this, as a user, by simply repeating requests to a node.
You'll get an instantaneous response repeating most Solr queries. However,
repeating anything with rq= added, each response takes about the same
amount of time.

I dug into this some in a debugger, and created a test (in LTR) to recreate
this

https://github.com/apache/solr/compare/main...softwaredoug:solr:no-rerank-caching?expand=1

We do a lookup using a NON rewritten version of the query, here
https://github.com/apache/solr/blob/main/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java#L1561

Later, prior to executing the query, Lucene's search method performs a
rewrite:

https://github.com/apache/lucene/blob/main/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java#L514

This causes a rerank query (like LTR's) to rewrite its main query, saving
it internally:

https://github.com/apache/solr/blob/main/solr/core/src/java/org/apache/solr/search/AbstractReRankQuery.java#L100

Then this is what's put into the cache

So later on, when the same query comes in, in its non-rewritten form, its
never seen in the cache

Am I missing something? It would appear that any query where its child
queries get rewritten would never get cached by Solr?

Thanks
-Doug

Reply via email to