Re: Applying boosting for keyword search

2014-05-28 Thread Erick Erickson
The issue is absolute ordering (sort) and influencing (boosting).

Here's an example

 score
 no boosts popularity
doc1   100 1
doc2 75 2
doc3 10 3

Sorting by popularity   asc will return doc1, doc2, doc3
Sorting by popularity desc will return doc3, doc2, doc1

It doesn't matter at all what the score is. When sorting by popularity
ascending will sort in this order if the score of doc3 is 10,000 and
the score of doc1 is 100. sorting totally overrides ranking.


Boosting, on the other hand, only changes order if you sort by score
(which is the default, ranking). So sorting by score desc would
return doc1, doc2, doc3.

Now, say you boost the docs such that you add 50 to the score for
doc2. The returned order would be doc2, doc1, doc3.

The deal here is that boosting changes the _score_, but doesn't impose
an absolute ordering. Sorting by the value in a field imposes an
absolute, unchanging ordering.


Best,
Erick


On Tue, May 27, 2014 at 12:30 AM, manju16832003 manju16832...@gmail.com wrote:
 Hi Erick,

 Your explanation leads me to one question :-)

 if
 */select?q=featured:true^100fq=make:toyotasort=featured_date desc,price
 asc*

 The above query, without edismax, works well because, If I'm not mistaken
 its boosting document by value method.

 So I'm boosting all my documents with the value featured=true and all those
 documents would be sorted by their featured date in descending order (Latest
 featured documents) and price (lower to higher).

 My question is,
 If we were to boost the documents based on a value, how could we make sure
 the order of the documents?

 For example :
 https://wiki.apache.org/solr/SolrRelevancyFAQ
 defType=dismaxqf=textq=supervilliansbf=popularity

 In the above case, all the documents that contains the word *popularity*
 would be on top depends on their score.

 However, I want to order the documents by certain criteria that contains the
 word popularity So we would have to use *sort* to order the documents.

 if we say, boosting has no or almost no effect if we use sort, then whats
 the contradiction story between *sort* and *boost*

 :-) would be interesting to know the answer



 --
 View this message in context: 
 http://lucene.472066.n3.nabble.com/Applying-boosting-for-keyword-search-tp4137523p4138241.html
 Sent from the Solr - User mailing list archive at Nabble.com.


Re: Applying boosting for keyword search

2014-05-27 Thread manju16832003
Hi Jack,
Thank you for the suggestions. :-)



--
View this message in context: 
http://lucene.472066.n3.nabble.com/Applying-boosting-for-keyword-search-tp4137523p4138239.html
Sent from the Solr - User mailing list archive at Nabble.com.


Re: Applying boosting for keyword search

2014-05-27 Thread manju16832003
Hi Erick,

Your explanation leads me to one question :-)

if
*/select?q=featured:true^100fq=make:toyotasort=featured_date desc,price
asc*

The above query, without edismax, works well because, If I'm not mistaken
its boosting document by value method.

So I'm boosting all my documents with the value featured=true and all those
documents would be sorted by their featured date in descending order (Latest
featured documents) and price (lower to higher).

My question is,
If we were to boost the documents based on a value, how could we make sure
the order of the documents?

For example : 
https://wiki.apache.org/solr/SolrRelevancyFAQ
defType=dismaxqf=textq=supervilliansbf=popularity

In the above case, all the documents that contains the word *popularity*
would be on top depends on their score.

However, I want to order the documents by certain criteria that contains the
word popularity So we would have to use *sort* to order the documents.

if we say, boosting has no or almost no effect if we use sort, then whats
the contradiction story between *sort* and *boost*

:-) would be interesting to know the answer



--
View this message in context: 
http://lucene.472066.n3.nabble.com/Applying-boosting-for-keyword-search-tp4137523p4138241.html
Sent from the Solr - User mailing list archive at Nabble.com.


Re: Applying boosting for keyword search

2014-05-22 Thread Erick Erickson
Your boosting in these examples is almost, but not quite totally,
useless. Here's why:

sort=price asc

The only time the score of the doc (which is what boosting influences)
will be used for ordering the output is as a tie-breaker when the
price is _exactly_ the same.

FWIW,
Erick


On Wed, May 21, 2014 at 9:53 PM, Jack Krupansky j...@basetechnology.com wrote:
 Your original message had q=toyota featured:true^100 and also using bq -
 both are valid. If either is not working for you, please be specific about
 what exactly is not behaving as you expected - what the symptom is.
 Sometimes you have to experiment with the boost factor.


 -- Jack Krupansky

 -Original Message- From: manju16832003
 Sent: Thursday, May 22, 2014 12:37 AM
 To: solr-user@lucene.apache.org
 Subject: Re: Applying boosting for keyword search


 Hi Jack,
 Thanks for your help.

 I do not want to boost *keyword* field. I apply full text search no keyword
 field and boost based on another field *featured*.

 Also qf field allows us to boost the field without values. I would like to
 boost with value

 Ex: qf=featured:true^100 - I don't think this is correct

 Example : Get all Toyota 2013 Car listings, which are featured listings.
 Field *featured* is a boolean flag

 So I tried this way

 /select?q=toyota
 2014defType=edismaxq.op=ANDqf=featured:true^100wt=jsonsort=price asc

 No luck :-(.

 My boosting works fine without keyword, I only have issue having keyword
 search.



 --
 View this message in context:
 http://lucene.472066.n3.nabble.com/Applying-boosting-for-keyword-search-tp4137523p4137528.html
 Sent from the Solr - User mailing list archive at Nabble.com.


Re: Applying boosting for keyword search

2014-05-21 Thread Jack Krupansky

Just add the boost to the keyword: q=toyota^100.

Or, use the dismax or edismax query parsers and then the boost can be 
specified for the field: qf=keyword^100.


-- Jack Krupansky

-Original Message- 
From: manju16832003

Sent: Thursday, May 22, 2014 12:04 AM
To: solr-user@lucene.apache.org
Subject: Applying boosting for keyword search

HI,
I have a scenario where by I apply boosting in the following two cases
- Usual search, by user selection
- Keyword search. I have a field *keyword* that is copy/combination of many
fields

When user does the usual query, my boosting works fines, this is how I do
boosting

/select?q=featured:true^100fq=make:toyotasort=price asc
This works fine

However I'm confused, how we could perform boosting using *keyword* serach

/select?q=toyotadefType=edismaxbq=featured:true^100sort=price asc
This does not work as I expected. In solrconfig.xml my default field set to
keyword (df=keyword)

My question, how could I perform boosting with keyword search?

when we are using keyword search, user keys goes into *q* param, so where
Can I specify the boosting query?
I tried with *bq* and *function query*, No luck :-(.

Can I perform like this
/select?q=toyota featured:true^100
Keyword and boosting done with *q* param.





--
View this message in context: 
http://lucene.472066.n3.nabble.com/Applying-boosting-for-keyword-search-tp4137523.html
Sent from the Solr - User mailing list archive at Nabble.com. 



Re: Applying boosting for keyword search

2014-05-21 Thread manju16832003
Hi Jack,
Thanks for your help.

I do not want to boost *keyword* field. I apply full text search no keyword
field and boost based on another field *featured*.

Also qf field allows us to boost the field without values. I would like to
boost with value

Ex: qf=featured:true^100 - I don't think this is correct

Example : Get all Toyota 2013 Car listings, which are featured listings.
Field *featured* is a boolean flag

So I tried this way

/select?q=toyota
2014defType=edismaxq.op=ANDqf=featured:true^100wt=jsonsort=price asc

No luck :-(.

My boosting works fine without keyword, I only have issue having keyword
search. 



--
View this message in context: 
http://lucene.472066.n3.nabble.com/Applying-boosting-for-keyword-search-tp4137523p4137528.html
Sent from the Solr - User mailing list archive at Nabble.com.


Re: Applying boosting for keyword search

2014-05-21 Thread Jack Krupansky
Your original message had q=toyota featured:true^100 and also using bq - 
both are valid. If either is not working for you, please be specific about 
what exactly is not behaving as you expected - what the symptom is. 
Sometimes you have to experiment with the boost factor.


-- Jack Krupansky

-Original Message- 
From: manju16832003

Sent: Thursday, May 22, 2014 12:37 AM
To: solr-user@lucene.apache.org
Subject: Re: Applying boosting for keyword search

Hi Jack,
Thanks for your help.

I do not want to boost *keyword* field. I apply full text search no keyword
field and boost based on another field *featured*.

Also qf field allows us to boost the field without values. I would like to
boost with value

Ex: qf=featured:true^100 - I don't think this is correct

Example : Get all Toyota 2013 Car listings, which are featured listings.
Field *featured* is a boolean flag

So I tried this way

/select?q=toyota
2014defType=edismaxq.op=ANDqf=featured:true^100wt=jsonsort=price asc

No luck :-(.

My boosting works fine without keyword, I only have issue having keyword
search.



--
View this message in context: 
http://lucene.472066.n3.nabble.com/Applying-boosting-for-keyword-search-tp4137523p4137528.html
Sent from the Solr - User mailing list archive at Nabble.com.