using OR and NOT in solr query
I don't know why that doesn't work, but this one is logically equivalent and it does work:
-(myField:superneat AND -myOtherField:somethingElse)
Maybe it has something to do with defining the same field twice in the query...
Try asking in the solr-user group, then post back here the final answer!
Solr currently checks for a "pure negative" query and inserts *:*
(which matches all documents) so that it works correctly.
-foo
is transformed by solr into (*:* -foo)
The big caveat is that Solr only checks to see if the top level query is a pure negative query!
So this means that a query like bar OR (-foo)
is not changed since the pure negative query is in a sub-clause of the top level query. You need to transform this query yourself into bar OR (*:* -foo)
You may check the solr query explanation to verify the query transformation:
?q=-title:foo&debug=query
is transformed to
(+(-title:foo +MatchAllDocsQuery(*:*))
Instead of "NOT [condition]" use "(*:* NOT [condition])"