On 12/31/2014 10:45 AM, Charles Sanders wrote: > I'm running solr 4.8. On my test system I ran the query > http://localhost:8888/solr/collection1/select?q=*:*&fq=-hasPublishedRevision:true&rows=100&fl=documentKind, > hasPublishedRevision&wt=json&indent=true > > The results are as expected. It returns 59 documents of various > documentKinds, all having a hasPublishedRevision value of false or none at > all (just not true). > > Now I run the query > http://localhost:8888/solr/collection1/select?q=*:*&fq=-hasPublishedRevision:true > OR documentKind:Solution&rows=100&fl=documentKind, > hasPublishedRevision&wt=json&indent=true > > This does not return the expected results. This returns only 5 documents. All > have documentKind as Solution. The results returned are consistent with an > AND condition in the filter query not an OR. > > I expected the filter query used to have returned all documents that do not > have a hasPublishedRevision value of true (regardless of documentKind), as > well as all documents with a documentKind of Solution (regardless to > hasPublishedRevision value). > > Obviously filter queries do not support 'any' boolean logic. I will have to > find a work around for this issue.
Your filter query starts with a negative clause. A simple truism for Solr: You cannot subtract from nothing. If the negative query is simple enough, Solr can detect it and implicitly add the *:* (all documents) for the negative clause to subtract from, but as soon as there is any complexity at all, Solr is not able to recognize the situation and repair it automatically. Try one of these filters instead. I am not sure exactly what you're after, so you will have to pick the one that does what you need: fq=*:* -(hasPublishRevision:true OR documentKind:Solution) fq=(*:* -hasPublishRevision:true) OR documentKind:Solution Thanks, Shawn