The short form is that the query parsers do not implement Boolean
logic by design. The boolean operators are approximated more or less
accurately by using parentheses. So try:

(content:bement AND status:relevant) OR source_name:Web

or, using the "real" syntax, something like:

+content:bement +status:relevant  source_name:Web

Also use &debug=query to see exactly what the resulting parsed query
is, but be aware you need to understand the +- etc notation.

Here's a pretty extensive treatment of the issue:
https://lucidworks.com/2011/12/28/why-not-and-or-and-not/

Best,
Erick
On Thu, Dec 6, 2018 at 10:02 AM Thomas L. Redman <tomred...@mchsi.com> wrote:
>
> I suspect nobody wants to broach this topic, this has to have come up before, 
> but I can not find an authoritative answer. How does the Standard Query 
> Parser evaluate boolean expressions? I have three fields, content, status and 
> source_name. The expression
>
> content:bement AND status:relevant
>
> yields 111 documents. The expression
>
> source_name:Web
>
> yields 78050168 documents. However, the expression
>
> content:bement AND status:relevant OR source_name:Web
>
> yields 111 documents. Can anybody describe the order of operation, operator 
> priorities used in evaluating the above expression? It looks to me as if it 
> takes the intersection of content:bement and status:relevant, then limits 
> successive set operators to that set. Is that true? So any additional “OR” 
> expressions will have no effect?

Reply via email to