On Thu, Oct 28, 2010 at 7:27 PM, Chris Hostetter <hossman_luc...@fucit.org> wrote:
> The queryResultCache is keyed on <Query,Sort,Start,Rows,Filters> and the > value is a "DocList" object ... > > http://lucene.apache.org/solr/api/org/apache/solr/search/DocList.html > > Unlike the Document objects in the documentCache, the DocLists in the > queryResultCache never get modified (techincally Solr doesn't actually > modify the Documents either, the Document just keeps track of it's fields > and updates itself as Lazy Load fields are needed) > > if a DocList containing results 0-10 is put in the cache, it's not > going to be of any use for a query with start=50. but if it contains 0-50 > it *can* be used if start < 50 and rows < 50 -- that's where the > queryResultWindowSize comes in. if you use start=0&rows=10, but your > window size is 50, SolrIndexSearcher will (under the covers) use > start=0&rows=50 and put that in the cache, returning a "slice" from 0-10 > for your query. the next query asking for 10-20 will be a cache hit. This makes sense but still doesn't explain what I'm seeing in my cache stats. When I issue a request with rows=10 the stats show an insert into the queryResultCache. If I send the same query, this time with rows=1000, I would not expect to see a cache hit but I do. So it seems like there must be something useful in whatever gets cached on the first request for rows=10 for it to be re-used by the request for rows=1000. --jay