On 5/8/2018 4:02 AM, Alfonso Noriega wrote:
I found solr 5.5.4 is doing some unexpected behavior (at least unexpected
for me) when using Must and Must not operator and parenthesis for filtering
and it would be great if someone can confirm if this is unexpected or not
and why.
<snip>
Do you have any idea why is this happening?
I'm surprised ANY of those examples are working. While the bug that
Erick mentioned could be a problem, I think this is happening because
you've got a multi-clause pure negative query. All query clauses have
NOT attached to them. Purely negative queries do not actually work.
The reason negative queries don't work is that if you start with nothing
and then start subtracting things, you end up with nothing.
To properly work, the first example would need to be written like this:
*:* AND NOT(status:"DELETED") AND (*:* AND
NOT(length:[1860000+TO+3659999]) AND NOT(length:[3660000+TO+*]))
I have added the all documents query as the starting point for both
major clauses, so that the subtraction (AND NOT) has something to
subtract from. Some of those parentheses are unnecessary, but I have
preserved them in the rewritten query.Without unnecessary
parentheses/quotes, the query would look like this:
*:* AND NOT status:DELETED AND (*:* AND NOT length:[1860000+TO+3659999]
AND NOT length:[3660000+TO+*])
You might be wondering why something like "fq=-status:DELETED" will work
even though it's a purely negative query. This works because with a
super-simple query like that, Solr is able to detect the unworkable
situation and automatically fix it by adding the all-docs starting point
behind the scenes. The example you gave is too complicated for Solr's
detection to work, so it doesn't get fixed.
Thanks,
Shawn