Steven Parkes points out:
Lucene doesn't use a pure Boolean algebra, so things don't always do what one might expect and things like De Morgan's law don't hold.
You're exactly on to what I was pondering about. With boolean logic, I understand the operators inside and out, so something like De Morgan's law makes intuitive sense to me. I also understand, as Chris Hostetter points out, that things must be thought of as MUST, MUST_NOT, and SHOULD. My simple question involves neither boolean expressions, nor does it involve comprehending Luence's operators. I understand both. The problem is the grouping operator ( ) and how it works with distributed operators, I don't quite get what the specific transformation rules are. I want to assume that: +(A B) = +A +B -(A B) = -A -B ...however, in running Luke, I see that +A +B generates a different query than +(A B). The first says must have both, but the second is must have at least one. And, while -A and -B means neither must not be there, can someone explain what -(A B) means? Furthermore syntax like +(-A +B) and -(-A +B) appear to be legal to Luke, though I have no clue what this even means in simple English. Thanks all so far! -wls