On Mon, Aug 29 2016, Charlie Allom <charlie@evilforbeginners.com> wrote: > You can debug what the real query is by adding NOTMUCH_DEBUG_QUERY=1 to > your search: > > 12:29 YELP-CHARLIE~[local@2.7.12] % NOTMUCH_DEBUG_QUERY=1 notmuch search 'term1 (tag:term2 tag:term3)' > Query string is: > term1 (tag:term2 tag:term3) > Exclude query is: > Xapian::Query((Kdeleted OR Kspam OR Kmuted OR Kkilled OR Kjunk)) > Final query is: > Xapian::Query(((Tmail AND Zterm1:(pos=1) AND 0 * (Kterm2 OR Kterm3)) AND_NOT (Kdeleted OR Kspam OR Kmuted OR Kkilled OR Kjunk))) > 12:29 YELP-CHARLIE~[local@2.7.12] % That was helpful, but confirms that tag terms are combined with OR: Query string is: tag:a -(b c) Final query is: => (0 * Ka AND_NOT (Zb:(pos=1) AND Zc:(pos=2))) (removed the exclusion for brevity) Query string is: tag:a -(tag:b tag:c) Final query is: => (0 * Ka AND_NOT 0 * (Kb OR Kc)) is this because they're both prefixed with tag? Indeed 'tag:a is:b' combines them with AND. 'tag:a is:b tag:c' is actually (tag:a OR tag:c) AND tag:b. Why this should be helpful? It's totally unexpected for me.