By SUBTRACT you mean: Add those docs that apply to fq1 or fq2 but not to fq1 AND fq2 (those, that apply to one of these fqs but not to both)?
Lance Norskog-2 wrote: > > AND/OR/NOT/SUBTRACT combinations for filters would certainly be a > useful feature. > > On Wed, Jan 5, 2011 at 11:36 PM, Em <mailformailingli...@yahoo.de> wrote: >> >> Thank you Jonathan. >> >> "fq=foo:bar&fq=foo:baz" seems to be the better alternative for >> "fq=foo:bar >> AND foo:baz" if "foo:bar" and "foo:baz" were often used in different >> combinations (not always together). >> >> However, in most of the usecases I can think of, an "fq=foo:bar OR >> foo:baz"-behaviour is expected and it would be nice if this fq would >> benefit >> from a cached "fq=foo:bar". >> >> I can imagine why this is not the case, if only one of two fq-clauses >> were >> cached. >> However, when "foo:bar" and "foo:baz" were cached seperately, why not >> benefiting from them when a "fq=foo:bar OR foo:baz" or "fq=foo:bar AND >> foo:baz" is requested? >> >> Who is responsible for putting fq's in the filterCache? I think one has >> to >> modify the logic of that class do benefit from already cached but >> recombined >> filterCaches. >> This would have a little bit less performance than caching the entire >> "foo:bar AND foo:baz" BitVector, since you need to reproduce one for that >> special use-case, but I think the usage of the cache is far more >> efficient, >> if "foo:bar" and "foo:baz" occur very frequently but "foo:bar AND >> foo:baz" >> do not. >> >> What do you think? >> >> Regards >> >> >> Jonathan Rochkind wrote: >>> >>> Each 'fq' clause is it's own cache key. >>> >>> 1. fq=foo:bar OR foo:baz >>> => one entry in filter cache >>> >>> 2. fq=foo:bar&fq=foo:baz >>> => two entries in filter cache, will not use cached entry from #1 >>> >>> 3. fq=foo:bar >>> => One entry, will use cached entry from #2 >>> >>> 4. fq=foo:bar >>> => One entry, will use cached entry from #2. >>> >>> So if you do queries in succession using each of those four fq's in >>> order, you will wind up with 3 entries in the cache. >>> >>> Note that "fq=foo:bar OR foo:baz" is not semantically identical to >>> "fq=foo&fq=bar". Rather that latter is semantically identical to >>> "fq=foo:bar AND foo:baz". But "fq=foo&fq=bar" will be two cache >>> entries, and "fq=foo:bar AND foo:baz" will be one cache entry, and the >>> two won't share any cache entries. >>> >>> >>> On 1/5/2011 3:17 PM, Em wrote: >>>> Hi, >>>> >>>> while reading through some information on the list and in the wiki, i >>>> found >>>> out that something is missing: >>>> >>>> When I specify a filter queries like this >>>> >>>> fq=foo:bar OR foo:baz >>>> or >>>> fq=foo:bar&fq=foo:baz >>>> or >>>> fq=foo:bar >>>> or >>>> fq=foo:baz >>>> >>>> How many filter query entries will be cached? >>>> Two, since there are two filters (foo:bar, foo:baz) or 3, since there >>>> are >>>> three different combinations (foo:bar OR foo:baz, foo:bar, foo:baz)? >>>> >>>> Thank you! >>> >>> >> >> Jonathan Rochkind wrote: >>> >>> Each 'fq' clause is it's own cache key. >>> >>> 1. fq=foo:bar OR foo:baz >>> => one entry in filter cache >>> >>> 2. fq=foo:bar&fq=foo:baz >>> => two entries in filter cache, will not use cached entry from #1 >>> >>> 3. fq=foo:bar >>> => One entry, will use cached entry from #2 >>> >>> 4. fq=foo:bar >>> => One entry, will use cached entry from #2. >>> >>> So if you do queries in succession using each of those four fq's in >>> order, you will wind up with 3 entries in the cache. >>> >>> Note that "fq=foo:bar OR foo:baz" is not semantically identical to >>> "fq=foo&fq=bar". Rather that latter is semantically identical to >>> "fq=foo:bar AND foo:baz". But "fq=foo&fq=bar" will be two cache >>> entries, and "fq=foo:bar AND foo:baz" will be one cache entry, and the >>> two won't share any cache entries. >>> >>> >>> On 1/5/2011 3:17 PM, Em wrote: >>>> Hi, >>>> >>>> while reading through some information on the list and in the wiki, i >>>> found >>>> out that something is missing: >>>> >>>> When I specify a filter queries like this >>>> >>>> fq=foo:bar OR foo:baz >>>> or >>>> fq=foo:bar&fq=foo:baz >>>> or >>>> fq=foo:bar >>>> or >>>> fq=foo:baz >>>> >>>> How many filter query entries will be cached? >>>> Two, since there are two filters (foo:bar, foo:baz) or 3, since there >>>> are >>>> three different combinations (foo:bar OR foo:baz, foo:bar, foo:baz)? >>>> >>>> Thank you! >>> >>> >> >> -- >> View this message in context: >> http://lucene.472066.n3.nabble.com/FQ-Filter-Query-Caching-Differences-with-OR-and-AND-tp2201004p2204235.html >> Sent from the Solr - User mailing list archive at Nabble.com. >> > > > > -- > Lance Norskog > goks...@gmail.com > > -- View this message in context: http://lucene.472066.n3.nabble.com/FQ-Filter-Query-Caching-Differences-with-OR-and-AND-tp2201004p2204428.html Sent from the Solr - User mailing list archive at Nabble.com.