You're confusing a query clause with fq when thinking about filter() I think.
Essentially they don't need to be used together, i.e. q=myclause AND filter(field:value) is identical to q=myclause&fq=field:value both in docs returned and filterCache usage. q=myclause&filter(fq=field:value) actually uses two filterCache entries, so is probably not what you want to use. the filter() syntax attached to a q clause (not an fq clause) is meant to allow you to get speedups you want to use compound clauses without having every combination be separate filterCache entries. Consider the following: fq=A OR B fq=A AND B fq=A fq=B These would require 4 filterCache entries. q=filter(A) OR filter(B) q=filter(A) AND filter(B) q=filter(A) q=filter(B) would only require two. Yet all of them would be satisfied only by looking at the filterCache. Aside from the example immediately above, which one you use is largely a matter of taste. Best, Erick On Mon, May 9, 2016 at 12:47 PM, Jay Potharaju <jspothar...@gmail.com> wrote: > Thanks Ahmet...but I am not still clear how is adding filter() option > better or is it the same as filtercache? > > My question is below. > > "As mentioned above adding filter() will add the filter query to the cache. > This would mean that results are fetched from cache instead of running n > number of filter queries in parallel. > Is it necessary to use the filter() option? I was under the impression that > all filter queries will get added to the "filtercache". What is the > advantage of using filter()?" > > Thanks > > On Sun, May 8, 2016 at 6:30 PM, Ahmet Arslan <iori...@yahoo.com.invalid> > wrote: > >> Hi, >> >> As I understand it useful incase you use an OR operator between two >> restricting clauses. >> Recall that multiple fq means implicit AND. >> >> ahmet >> >> >> >> On Monday, May 9, 2016 4:02 AM, Jay Potharaju <jspothar...@gmail.com> >> wrote: >> As mentioned above adding filter() will add the filter query to the cache. >> This would mean that results are fetched from cache instead of running n >> number of filter queries in parallel. >> Is it necessary to use the filter() option? I was under the impression that >> all filter queries will get added to the "filtercache". What is the >> advantage of using filter()? >> >> *From >> doc: >> https://cwiki.apache.org/confluence/display/solr/Query+Settings+in+SolrConfig >> < >> https://cwiki.apache.org/confluence/display/solr/Query+Settings+in+SolrConfig >> >* >> This cache is used by SolrIndexSearcher for filters (DocSets) for unordered >> sets of all documents that match a query. The numeric attributes control >> the number of entries in the cache. >> Solr uses the filterCache to cache results of queries that use the fq >> search parameter. Subsequent queries using the same parameter setting >> result in cache hits and rapid returns of results. See Searching for a >> detailed discussion of the fq parameter. >> >> *From Yonik's site: http://yonik.com/solr/query-syntax/#FilterQuery >> <http://yonik.com/solr/query-syntax/#FilterQuery>* >> >> (Since Solr 5.4) >> >> A filter query retrieves a set of documents matching a query from the >> filter cache. Since scores are not cached, all documents that match the >> filter produce the same score (0 by default). Cached filters will be >> extremely fast when they are used again in another query. >> >> >> Thanks >> >> >> On Fri, May 6, 2016 at 9:46 AM, Jay Potharaju <jspothar...@gmail.com> >> wrote: >> >> > We have high query load and considering that I think the suggestions made >> > above will help with performance. >> > Thanks >> > Jay >> > >> > On Fri, May 6, 2016 at 7:26 AM, Shawn Heisey <apa...@elyograg.org> >> wrote: >> > >> >> On 5/6/2016 7:19 AM, Shawn Heisey wrote: >> >> > With three separate >> >> > fq parameters, you'll get three cache entries in filterCache from the >> >> > one query. >> >> >> >> One more tidbit of information related to this: >> >> >> >> When you have multiple filters and they aren't cached, I am reasonably >> >> certain that they run in parallel. Instead of one complex filter, you >> >> would have three simple filters running simultaneously. For low to >> >> medium query loads on a server with a whole bunch of CPUs, where there >> >> is plenty of spare CPU power, this can be a real gain in performance ... >> >> but if the query load is really high, it might be a bad thing. >> >> >> >> Thanks, >> >> Shawn >> >> >> >> >> > >> > >> > -- >> > Thanks >> > Jay Potharaju >> >> > >> > >> >> >> >> -- >> Thanks >> Jay Potharaju >> > > > > -- > Thanks > Jay Potharaju