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 Grant Ingersoll <gs...@apache.org> on 2008/02/01 14:02:51 UTC

Re: Different levels of negative boosting

Hi Prabin,

Can you give an example of what you would like a query to look like?   
Lucene doesn't do negative boosts (ok, w/ a patch, I think it can,  
but...)  At any rate, the boosts are relative, so perhaps you just  
lower the boost to be very small for the "bad" terms and raise it  
higher for the good terms.

What is the end goal of what you are trying to find?  Perhaps there  
are some alternatives.

-Grant

On Jan 31, 2008, at 2:49 PM, prabin meitei wrote:

> Hi,  I want to give different levels of negative boost (reduce the  
> score) to
> documents for different matching queries. How it can be done??  
> Googling I
> found out this link
> http://wiki.apache.org/jakarta-lucene/CommunityContributions  but   
> it just
> gives the option of giving single level negative boost.
> is there any way of having multiple matching queries and give them  
> different
> negative boosts???
>
>
> Regards,
> Prabin

--------------------------
Grant Ingersoll
http://lucene.grantingersoll.com
http://www.lucenebootcamp.com

Lucene Helpful Hints:
http://wiki.apache.org/lucene-java/BasicsOfPerformance
http://wiki.apache.org/lucene-java/LuceneFAQ





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


Re: Different levels of negative boosting

Posted by Grant Ingersoll <gs...@apache.org>.
What are the other parts of your queries like?  And why the need for  
the separate instantiations of the QueryParser?

You might try something like:   good^2 badA^0.1 badB^0.3 or some other  
bigger separation of the boost value between the good terms and the  
bad terms.

The other thing to do is use the explain() method to see how the  
individual terms are being scored.

-Grant
On Feb 1, 2008, at 8:41 AM, prabin meitei wrote:

> Hi Grant,
>    I have an index for articles containing fields 'id' , 'body' and  
> others
>
> BooleanQuery query = new BooleanQuery;
> queryParser = new QueryParser("body", new StandardAnalyzer());
> query.add(queryParser.parse("keywords"), Occur.MUST);
>
> if i query at this level then i get all the articles I want. But I  
> want to
> de-boost some of them if they matches another term
> .
> BooleanQuery q1 = new BooleanQuery;
> BooleanQuery q2 = new BooleanQuery;
> queryParser = new QueryParser("body", new StandardAnalyzer());
> q1.add(queryParser.parse("body"), Occur.SHOULD);
> queryParser = new QueryParser("some field", new StandardAnalyzer());
> q2.add(queryParser.parse("keywords2"), Occur.SHOULD);
>
> q1.setBoost(0.1);
> q2.setBoost(0.3);
> query.add(q1, Occur.SHOULD);
> query.add(q2, Occur.SHOULD);
> ### what I want here is that any document matching the queries q1  
> and q2
> will be boosted negatively(reducing their score but *not eliminating  
> from
> the search result*)
> # puting values less than 1.0 (as I tried doing) did not help  
> (lucene seems
> to assume it as 1)
> # if there was only one query then I could do it as I wrote in my  
> last mail.
> But the problem is when there a multiple queries to reduce the score  
> by
> multiple levels.
>
> or am I going in a wrong direction?? It wud be nice if you have some
> suggestion.
>
> Prabin
>
> On Feb 1, 2008 6:32 PM, Grant Ingersoll <gs...@apache.org> wrote:
>
>> Hi Prabin,
>>
>> Can you give an example of what you would like a query to look like?
>> Lucene doesn't do negative boosts (ok, w/ a patch, I think it can,
>> but...)  At any rate, the boosts are relative, so perhaps you just
>> lower the boost to be very small for the "bad" terms and raise it
>> higher for the good terms.
>>
>> What is the end goal of what you are trying to find?  Perhaps there
>> are some alternatives.
>>
>> -Grant
>>
>> On Jan 31, 2008, at 2:49 PM, prabin meitei wrote:
>>
>>> Hi,  I want to give different levels of negative boost (reduce the
>>> score) to
>>> documents for different matching queries. How it can be done??
>>> Googling I
>>> found out this link
>>> http://wiki.apache.org/jakarta-lucene/CommunityContributions  but
>>> it just
>>> gives the option of giving single level negative boost.
>>> is there any way of having multiple matching queries and give them
>>> different
>>> negative boosts???
>>>
>>>
>>> Regards,
>>> Prabin
>>
>> --------------------------
>> Grant Ingersoll
>> http://lucene.grantingersoll.com
>> http://www.lucenebootcamp.com
>>
>> Lucene Helpful Hints:
>> http://wiki.apache.org/lucene-java/BasicsOfPerformance
>> http://wiki.apache.org/lucene-java/LuceneFAQ
>>
>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
>> For additional commands, e-mail: java-user-help@lucene.apache.org
>>
>>

--------------------------
Grant Ingersoll
http://lucene.grantingersoll.com
http://www.lucenebootcamp.com

Lucene Helpful Hints:
http://wiki.apache.org/lucene-java/BasicsOfPerformance
http://wiki.apache.org/lucene-java/LuceneFAQ





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


Re: Different levels of negative boosting

Posted by prabin meitei <pr...@gmail.com>.
Hi Grant,
    I have an index for articles containing fields 'id' , 'body' and others

BooleanQuery query = new BooleanQuery;
queryParser = new QueryParser("body", new StandardAnalyzer());
query.add(queryParser.parse("keywords"), Occur.MUST);

if i query at this level then i get all the articles I want. But I want to
de-boost some of them if they matches another term
.
BooleanQuery q1 = new BooleanQuery;
BooleanQuery q2 = new BooleanQuery;
queryParser = new QueryParser("body", new StandardAnalyzer());
q1.add(queryParser.parse("body"), Occur.SHOULD);
queryParser = new QueryParser("some field", new StandardAnalyzer());
q2.add(queryParser.parse("keywords2"), Occur.SHOULD);

q1.setBoost(0.1);
q2.setBoost(0.3);
query.add(q1, Occur.SHOULD);
query.add(q2, Occur.SHOULD);
### what I want here is that any document matching the queries q1 and q2
will be boosted negatively(reducing their score but *not eliminating from
the search result*)
# puting values less than 1.0 (as I tried doing) did not help (lucene seems
to assume it as 1)
# if there was only one query then I could do it as I wrote in my last mail.
But the problem is when there a multiple queries to reduce the score by
multiple levels.

or am I going in a wrong direction?? It wud be nice if you have some
suggestion.

Prabin

On Feb 1, 2008 6:32 PM, Grant Ingersoll <gs...@apache.org> wrote:

> Hi Prabin,
>
> Can you give an example of what you would like a query to look like?
> Lucene doesn't do negative boosts (ok, w/ a patch, I think it can,
> but...)  At any rate, the boosts are relative, so perhaps you just
> lower the boost to be very small for the "bad" terms and raise it
> higher for the good terms.
>
> What is the end goal of what you are trying to find?  Perhaps there
> are some alternatives.
>
> -Grant
>
> On Jan 31, 2008, at 2:49 PM, prabin meitei wrote:
>
> > Hi,  I want to give different levels of negative boost (reduce the
> > score) to
> > documents for different matching queries. How it can be done??
> > Googling I
> > found out this link
> > http://wiki.apache.org/jakarta-lucene/CommunityContributions  but
> > it just
> > gives the option of giving single level negative boost.
> > is there any way of having multiple matching queries and give them
> > different
> > negative boosts???
> >
> >
> > Regards,
> > Prabin
>
> --------------------------
> Grant Ingersoll
> http://lucene.grantingersoll.com
> http://www.lucenebootcamp.com
>
> Lucene Helpful Hints:
> http://wiki.apache.org/lucene-java/BasicsOfPerformance
> http://wiki.apache.org/lucene-java/LuceneFAQ
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-user-help@lucene.apache.org
>
>