You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Jonathan Rochkind <ro...@jhu.edu> on 2011/03/17 20:23:36 UTC

dismax 1.4.1 and pure negative queries

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.



Re: dismax 1.4.1 and pure negative queries

Posted by Jonathan Rochkind <ro...@jhu.edu>.
On 3/17/2011 5:02 PM, Jonathan Rochkind wrote:
> &defType=lucene
> &q=*:* AND NOT _query_:"{!dismax} foo bar baz"


Oops, forgot a part, for anyone reading this and wanting to use it as a 
solution.

You can transform:

$defType=dismax
&q=-foo -bar -baz

To:

&defType=lucene
&q=*:* AND NOT _query_:"{!dismax mm=1}foo bar baz"

And have basically equivalent semantics to what you meant but which 
dismax won't do.  The mm=1 is important, left that out before.

Jonathan


> I might be able to work with that in my situation.  But it also seems
> like something that dismax could take care of for you in such a
> situation. It looks from the documentation like the newer (not in 1.4.1)
> edismax does in at least some cases, where the pure negative query is
> inside grouping/subquery parens, it's not clear to me if it does it in
> general or not.
>
> On 3/17/2011 4:45 PM, 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.

Re: dismax 1.4.1 and pure negative queries

Posted by Jonathan Rochkind <ro...@jhu.edu>.
Yeah, looks to me like two or more negated terms does the same thing, 
not just one.

q=-foo -bar -baz

Also always returns zero hits. For the same reason. I understand why 
(sort of), although at the same time there is a logical answer to this 
question "-foo -bar -baz", and oddly, 1.4.1 _lucene_ query parser _can_ 
handle it.

Erik Hatcher in IRC gave me one transformation of this query that still 
uses dismax as a unit, but can get you a solution.  (I want to use 
dismax in this case for it's convenient aggregation of multiple fields 
in qf, not so much for actual disjunction-maximum behavior).

&defType=lucene
&q=*:* AND NOT _query_:"{!dismax} foo bar baz"

I might be able to work with that in my situation.  But it also seems 
like something that dismax could take care of for you in such a 
situation. It looks from the documentation like the newer (not in 1.4.1) 
edismax does in at least some cases, where the pure negative query is 
inside grouping/subquery parens, it's not clear to me if it does it in 
general or not.

On 3/17/2011 4:45 PM, 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.

Re: dismax 1.4.1 and pure negative queries

Posted by Erik Hatcher <er...@gmail.com>.
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.


Re: dismax 1.4.1 and pure negative queries

Posted by Markus Jelsma <ma...@openindex.io>.
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.

Re: dismax 1.4.1 and pure negative queries

Posted by Jonathan Rochkind <ro...@jhu.edu>.
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.

Re: dismax 1.4.1 and pure negative queries

Posted by Markus Jelsma <ma...@openindex.io>.
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.