purely negative queries work with Solr's default ("lucene") query parser.  But 
don't with dismax.   Or so that seems with my experience testing this out just 
now, on trunk.

In chatting with Jonathan further off-list we discussed having the best of both 
worlds.... 

   &q={!lucene}*:* AND NOT _query_:"{!dismax ...}<inverse of original negative 
query>"

But this of course requires detecting that a query is all negative.  edismax 
can handle purely negative, FWIW, -ipod => +(-DisjunctionMaxQuery((text:ipod)) 
+MatchAllDocsQuery(*:*))

        Erik



On Mar 17, 2011, at 16:45 , Markus Jelsma wrote:

> Oh i see, i overlooked your first query. A query with one term that is 
> negated 
> will yield zero results, it doesn't return all documents because nothing 
> matches. It's, if i remember correctly, the same as when you're looking for a 
> field that doesn't have a value: q=-field:[* TO *].
> 
>> My fault for putting in the quotes in the email, I actually don't have
>> tests in my quotes, just tried again to make sure.
>> 
>> And I always get 0 results on a pure negative Solr 1.4.1 dismax query. I
>> think it does not actually work?
>> 
>> On 3/17/2011 3:52 PM, Markus Jelsma wrote:
>>> Hi,
>>> 
>>> It works just as expected, but not in a phrase query. Get rid of your
>>> quotes and you'll be fine.
>>> 
>>> Cheers,
>>> 
>>>> Should 1.4.1 dismax query parser be able to handle pure negative queries
>>>> like:
>>>> 
>>>> &q="-foo"
>>>> &q="-foo -bar"
>>>> 
>>>> It kind of seems to me trying it out that it can NOT.  Can anyone else
>>>> verify?  The documentation I can find doesn't say one way or another.
>>>> Which is odd because the documentation for straight solr-lucene query
>>>> parser athttp://wiki.apache.org/solr/SolrQuerySyntax  suggests that
>>>> straight solr-lucene query parser_can_  handle pure negative.  That
>>>> seems odd that solr-lucene Q.P. can, but dismax can't? Maybe I'm
>>>> misinterpreting or misunderstanding my experimental results.

Reply via email to