: Although I haven't tried yet, I can't imagine that this request returns in
: sub-zero seconds, which is what I want (having a index of about 1M docs with
: 6000 fields/ doc and about 10 complex facetqueries / request). 

i wouldn't neccessarily assume that :)  

If you have a request handler which does a query with a facet.field, and 
then does a followup query for the top N constraings in that facet.field, 
the time needed to execute that handler on a cold index should primarily 
depend on the faceting aspect and how many unique terms there are in that 
field.  try it and see.

: The navigation-pages are pretty important for, eh well navigation ;-) and
: although I can rely on frequent access of these pages most of the time, it
: is not guarenteed (so neither is the caching)

if i were in your shoes: i wouldn't worry about it.  i would setup 
"cold cache warming" of the important queries using a firstSearcher event 
listener, i would setup autowarming on the caches, i would setup explicit 
warming of queries using sort fields i care about in a newSearcher event 
listener, andi would make sure to tune my caches so that they were big 
enough to contain a much larger number of entries then are used by my 
custom request handler for the queris i care about (especially if my index 
only changed a few times a day, the caches become a huge win in that case, 
so throw everything you've got at them)

and for the record: i've been in your shoes.

>From a purely theoretical standpoint: if enough other requests are coming 
in fast enough to expunge the objects used by your "important" navigation 
pages from the caches ... then those pages aren't that important (at least 
not to your end users as an aggregate)

on the other hand: if you've got discreet pools of users (like say: 
customers who do searches, vs your boss who thiks navigation pages are 
really important) then another appraoch is to have to ports searching 
queries -- one that you send your navigation type queries to (with the 
caches tuned appropriately) and one that you send other traffic to (with 
caches tuned appropriately) ... i do that for one major index, it makes a 
lot of sense when you have very distinct usage profiles and you want to 
get the most bang for your buck cache wise.


: > #1 wouldn't really accomplish what you want without #2 as well.

: regarding #1. 
: Wouldn't making a user-cache for the sole-purpose of storing these queries
: be enough? I could then reference this user-cache by name, and extract the

only if you also write a custom request handler ... that was my point 
before it was clear that you were already doing that no matter what (you 
had custom request handler listed in #2)

you could definitely make sure to explicitly put all of your DocLists in 
your own usercache, that will certainly work.  but frankly, based on 
what you've described about your use case, and how often your data 
cahnges, it would probably be easier to set up a layer of caching in front 
of Solr (since you are concerned with ensuring *all* of the date 
for these important pages gets cached) ... something like an HTTP reverse 
proxy cache (aka: acelerator proxy) would help you ensure that thes whole 
pages were getting cached.

i've never tried it, but in theory: you could even setup a newSearcher 
event listener to trigger a little script to ping your proxy with a 
request thatforced it to revalidate the query when your index changes.



-Hoss

Reply via email to