Mike, Thanks for the input, it's really valueable. Several forum users have suggested using fq to separate the caching of filters, and I can immediately see how this would help. I'm changing the code right now and going to run some benchmarks, hopefully see a big gain just from that
> - use range queries when querying contiguous disjunctions (age:[28 TO 33] > rather than what you have above). I actually started with the above, using int type field, and it somehow seemed slower than using explicit, but I will certainly try again. > - convert the expensive, heap-based age filter disjunction into a bitset > created directly from the term enum Can you pls. elaborate a little more? Are you advising to use fq=age:[28 TO 33], or should that simply be part of the regular query? Also, what is the best "type" to use when defining age? I'm currently using "text", should I use "int" instead... I didn't see any difference with using the type "int". One of the issues is that the age ranges are not "pre-defined" - they can be any combination, 22-23, 22-85, 45-49, etc. I realize that pre-defining age ranges would drastically improve performance but then we're greatly reducing the value of this type of search Thanks, Alex