I see my tables didn't come through so well. Here's (I hope) a plain text version:
I understand that it would be best to have a UI that mapped lists of terms to MUST, MUST_NOT and SHOULD, but I'm currently constrained to using the QueryParser with boolean operators. Given that, I was thinking that the addition of "*:*" (in 2.1) to represent MatchAllDocsQuery might help solve:
" NOT Chair " is the problem ... you can't have a negative clause in isolation by itself -- it doesn't make sense because there isn't anything positively selecting results for you to then exclude results from.
by making that: "*:* NOT Chair" To test, I indexed these documents: DocID Body Value ----- ---------- 0 A B C 1 A B C D 2 A C D 3 B C D 4 C D 5 B Expected Actual Query Parsed As Matches Matches ----- --------- -------- ------- NOT B -body:B 2, 4 <none> *:* NOT B MatchAllDocsQuery -body:B 2, 4 2, 4, 5 *.* AND NOT B +MatchAllDocsQuery -body:B 2, 4 2, 4, 5 Can someone explain why doc 5 is matched for both "*:* NOT B" and "*.* AND NOT B"? Are my Expected Matches incorrect? Thanks, david