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

Reply via email to