You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@lucene.apache.org by christophe leroy <ha...@yahoo.fr> on 2006/11/25 20:29:31 UTC

Question about the "not" in lucene

Hello,

I don't understand how to use "not" with Lucene. I
think that it is not a boolean not. I read the
documentation but it is not clear enough on how the
"not" works.

For example, I tried to do this request:
type:product
--> I got 100 responses. It is normal. Then, I tried
this request:
type:product AND name:test 
--> I got 1 response. It is normal too. And when I
tried this request:
type:product AND (name:test OR NOT name:test)
--> I got 1 response only. I should normally get 100
responses if the "not" was a boolean not.

Could you explain me how the "not" works?

Thank in advance,

Christophe



	

	
		
___________________________________________________________________________ 
Découvrez une nouvelle façon d'obtenir des réponses à toutes vos questions ! 
Profitez des connaissances, des opinions et des expériences des internautes sur Yahoo! Questions/Réponses 
http://fr.answers.yahoo.com

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


Re: Question about the "not" in lucene

Posted by Mark Miller <ma...@gmail.com>.
Yes, I believe that it is entirely possible. You can nest and link 
boolean clauses all you want: your example query would be a boolean with 
two top level clauses, one required to be there and one required not to 
be there. The second top level clause would itself be a boolean query 
with two two clauses, both with a SHOULD. Now, what I think happens (I 
haven't looked myself) is that the type:product will score a document 
positively if found, but the NOT clause will score a document to 0 if 
either of it's sub-clauses are found. Those 0 scores will not return as 
hits. Now notice that if you just have "NOT(name:"toto" OR name:"tit")" 
ALL of the docs will score 0 one way or another- the docs not found will 
be 0 and docs found will be scored 0 by the NOT...so you will not get a 
result. Now if you use the special query that matches all docs, and then 
use a NOT query...the not query will work as expected...all docs will 
get a positive score, but the NOT query will 0 out those in the MUST_NOT 
clause.

I am an unclear kind of guy, so I hope that gives some help.

- Mark

hawat23 wrote:
> Thanks you for your answer.
>
> But, is it possible to group clauses with a "not". exemple:
>
> type:product NOT (name:"toto" OR name:"titi") ??
>
> Christophe
>
> Mark Miller a écrit :
>> Personally, I think of it as not a 'not' operator, but more a 'but 
>> not' or 'and not' operator. Thats not totally the case I believe, but 
>> gives you semantics that work. Truly I think that each part of the 
>> query creates a score and the NOT query scores 0. That gives a 
>> different result than a boolean system. More than a few times it has 
>> been mentioned that Lucene is a scoring system and not a boolean system.
>>
>> - Mark
>>
>> christophe leroy wrote:
>>> Hello,
>>>
>>> I don't understand how to use "not" with Lucene. I
>>> think that it is not a boolean not. I read the
>>> documentation but it is not clear enough on how the
>>> "not" works.
>>>
>>> For example, I tried to do this request:
>>> type:product
>>> --> I got 100 responses. It is normal. Then, I tried
>>> this request:
>>> type:product AND name:test --> I got 1 response. It is normal too. 
>>> And when I
>>> tried this request:
>>> type:product AND (name:test OR NOT name:test)
>>> --> I got 1 response only. I should normally get 100
>>> responses if the "not" was a boolean not.
>>>
>>> Could you explain me how the "not" works?
>>>
>>> Thank in advance,
>>>
>>> Christophe
>>>
>>>
>>>
>>>    
>>>            
>>> ___________________________________________________________________________ 
>>> Découvrez une nouvelle façon d'obtenir des réponses à toutes vos 
>>> questions ! Profitez des connaissances, des opinions et des 
>>> expériences des internautes sur Yahoo! Questions/Réponses 
>>> http://fr.answers.yahoo.com
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
>>> For additional commands, e-mail: java-user-help@lucene.apache.org
>>>
>>>
>>>   
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
>> For additional commands, e-mail: java-user-help@lucene.apache.org
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-user-help@lucene.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


Re: Question about the "not" in lucene

Posted by hawat23 <ha...@yahoo.fr>.
Thanks you for your answer.

But, is it possible to group clauses with a "not". exemple:

type:product NOT (name:"toto" OR name:"titi") ??

Christophe

Mark Miller a écrit :
> Personally, I think of it as not a 'not' operator, but more a 'but 
> not' or 'and not' operator. Thats not totally the case I believe, but 
> gives you semantics that work. Truly I think that each part of the 
> query creates a score and the NOT query scores 0. That gives a 
> different result than a boolean system. More than a few times it has 
> been mentioned that Lucene is a scoring system and not a boolean system.
>
> - Mark
>
> christophe leroy wrote:
>> Hello,
>>
>> I don't understand how to use "not" with Lucene. I
>> think that it is not a boolean not. I read the
>> documentation but it is not clear enough on how the
>> "not" works.
>>
>> For example, I tried to do this request:
>> type:product
>> --> I got 100 responses. It is normal. Then, I tried
>> this request:
>> type:product AND name:test --> I got 1 response. It is normal too. 
>> And when I
>> tried this request:
>> type:product AND (name:test OR NOT name:test)
>> --> I got 1 response only. I should normally get 100
>> responses if the "not" was a boolean not.
>>
>> Could you explain me how the "not" works?
>>
>> Thank in advance,
>>
>> Christophe
>>
>>
>>
>>     
>>
>>     
>>        
>> ___________________________________________________________________________ 
>> Découvrez une nouvelle façon d'obtenir des réponses à toutes vos 
>> questions ! Profitez des connaissances, des opinions et des 
>> expériences des internautes sur Yahoo! Questions/Réponses 
>> http://fr.answers.yahoo.com
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
>> For additional commands, e-mail: java-user-help@lucene.apache.org
>>
>>
>>   
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-user-help@lucene.apache.org
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


Re: Question about the "not" in lucene

Posted by Mark Miller <ma...@gmail.com>.
Personally, I think of it as not a 'not' operator, but more a 'but not' 
or 'and not' operator. Thats not totally the case I believe, but gives 
you semantics that work. Truly I think that each part of the query 
creates a score and the NOT query scores 0. That gives a different 
result than a boolean system. More than a few times it has been 
mentioned that Lucene is a scoring system and not a boolean system.

- Mark

christophe leroy wrote:
> Hello,
>
> I don't understand how to use "not" with Lucene. I
> think that it is not a boolean not. I read the
> documentation but it is not clear enough on how the
> "not" works.
>
> For example, I tried to do this request:
> type:product
> --> I got 100 responses. It is normal. Then, I tried
> this request:
> type:product AND name:test 
> --> I got 1 response. It is normal too. And when I
> tried this request:
> type:product AND (name:test OR NOT name:test)
> --> I got 1 response only. I should normally get 100
> responses if the "not" was a boolean not.
>
> Could you explain me how the "not" works?
>
> Thank in advance,
>
> Christophe
>
>
>
> 	
>
> 	
> 		
> ___________________________________________________________________________ 
> Découvrez une nouvelle façon d'obtenir des réponses à toutes vos questions ! 
> Profitez des connaissances, des opinions et des expériences des internautes sur Yahoo! Questions/Réponses 
> http://fr.answers.yahoo.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-user-help@lucene.apache.org
>
>
>   

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org