Operator precedence is SQL-like (not Java-like). When
there is more than one logical operator in a statement, and they are not
explicitly grouped using parentheses, NOT is evaluated
first, then AND, and finally OR.
The following shows the operator precedence from highest to lowest:
" [, ], <, > () ~ (prefix and postfix), = ^ +, |, - NOT, AND OR
AND and OR can be combined with +, |, - with the following meanings:
AND (no prefix is the same as +) | Explanation |
---|---|
big AND dog | big and dog must occur |
+big AND +dog | big and dog must occur |
big AND +dog | big and dog must occur |
+big AND dog | big and dog must occur |
big AND |dog | big must occur and dog should occur |
|big AND dog | big should occur and dog must occur |
|big AND |dog | both big and dog should occur, and at least one must match |
big AND -dog | big must occur and dog must not occur |
-big AND dog | big must not occur and dog must occur |
-big AND -dog | both big and dog must not occur |
|big AND -dog | big should occur and dog must not occur |
OR (no prefix is the same as +) | Explanation |
---|---|
dog OR wolf | dog and wolf should occur, and at least one must match |
+dog OR +wolf | dog and wolf should occur, and at least one must match |
dog OR +wolf | dog and wolf should occur, and at least one must match |
+dog OR wolf | dog and wolf should occur, and at least one must match |
dog OR |wolf | dog and wolf should occur, and at least one must match |
|dog OR wolf | dog and wolf should occur, and at least one must match |
|dog OR |wolf | dog and wolf should occur, and at least one must match |
dog OR -wolf | dog should occur and wolf should not occur, one of the clauses must be valid for any result |
-dog OR wolf | dog should not occur and wolf should occur, one of the clauses must be valid for any result |
-dog OR -wolf | dog and wolf should not occur, one of the clauses must be valid for any result |