Hi all,

I'm observing odd results when using parentheses to group two or more
terms in a solr query, some of which are negated (by prefixing the
term with '-' or 'NOT ')

For example, in the current stable version of solr, I indexed the
accompanying example docs:
[EMAIL PROTECTED]:~/solr/example/exampledocs$ java -jar post.jar *.xml
...which contain information for two "video" related products: an ATI
video card, and an iPod.

So the following queriesy *should* return one hit, the ATI card:
name:video AND (-features:podcasts)
name:video AND (NOT features:podcasts)

...but they returns zero hits. Strangely, if I move the negation
outside the parentheses, the queries properly return one result:

name:video AND -(features:podcasts)

name:video AND NOT (features:podcasts)

Here are some other problematic queries that should return 1 result,
but return zero:

name:video AND (-features:podcasts) AND -features:itunes
name:video AND (-features:podcasts AND -features:itunes)
(name:video) AND (-features:podcasts) AND (-features:itunes)

But these logically-equivalent queries return the correct results:
name:video AND -features:podcasts AND -features:itunes
(name:video AND -features:podcasts AND -features:itunes)
name:video AND -(features:podcasts OR features:itunes)

Generally whenever I include negations inside a grouping, Solr returns
zero hits. The only exception to this is when I group the entire
search. The following queries work properly:
(name:video AND -features:podcasts)
(name:video AND NOT features:podcasts)
...I suspect this is due to the parser simply stripping off the
parentheses before further tokenizing the query.

Is this a bug, or am I doing something wrong? It seems rather limiting
to only allowing grouping of 'AND' and 'OR" operators, but not
negation operators.

Cheers,
Aaron Suggs

Reply via email to