On Tue, May 26, 2009 at 3:42 PM, Larry He <shiqua...@gmail.com> wrote: > We have about 100 different fields and 1 million documents we indexed with > Solr. Many of the fields are multi-valued, and some are numbers (for range > search). We are expecting to perform solr queries contains over 30 terms > and often the response time is well over a second. I found that the caches > in Solr such as QueryResultCache and FilterCache does not help us much in > this case as most of the queries have combinations of terms that are > unlikely to repeat. An example of our query would look like: > > field1:(02 04 05) field2:(01 02 03) field2:(01 02 03) ... > > My question is how can we improve performance of these queries?
filters are independently cached... but they are currently only "AND" filters, so you could only split it up like so: fq=field1:(02 04 05)&fq=field2:(01 02 03)&fq=field2:(01 02 03) But that won't help unless any of the individual fq params are repeated across different queries. Range search can also be sped up a lot via the use of the new TrieRange fields, or via the frange (function range query) capabilities in Solr 1.4.... it's not clear if the range queries or the term queries are your current bottleneck. If the range queries aren't your bottleneck and separate filters don't work, then a query type could be developed that would help your situation by caching matches on term queries. Are relevancy scores important for the clauses like field1:(02 04 05), or do you sort by some other criteria? -Yonik http://www.lucidimagination.com