views:

2509

answers:

3

I have managed to build an index in Solr which I can search on keyword, produce facets, query facets etc. This is all working great. I have implemented my search using a dismax query so it searches predetermined fields.

However, my results are coming back sorted by score which appears to be calculated by keyword relevancy only. I would like to adjust the score where fields have pre-determined values. I think I can do this with boost query and boost functions but the documentation here:

http://wiki.apache.org/solr/DisMaxRequestHandler#head-6862070cf279d9a09bdab971309135c7aea22fb3

Is not particularly helpful. I tried adding adding a bq argument to my search:

&bq=media:DVD^2

(yes, this is an index of films!) but I find when I start adding more and more:

&bq=media:DVD^2&bq=media:BLU-RAY^1.5

I find the negative results - e.g. films that are DVD but are not BLU-RAY get negatively affected in their score. In the end it all seems to even out and my score is as it was before i started boosting.

I must be doing this wrong and I wonder whether "boost function" comes in somewhere. Any ideas on how to correctly use boost?

A: 

It sounds like you need to apply the boost at index time instead of query time. So when you are preparing documents to be added to the index, give those that are DVD a boost of 2, and those that are Blu-Ray a boost of 1.5.

John
+2  A: 

Apparently this is normal for films that are DVD but are not BLU-RAY get negatively affected in their score. This is because the more constraints you add the more the queryNorm value is reduced - and all scores are multiplied by this value.

cubabit
+1  A: 

This is a little late and it looks like you probably already have what you are looking for, but...

If you're curious about boost functions (which, judging by your desired results, I think you should be) you should check out the bf argument instead of the bq argument.

Try setting the bf argument to

media:DVD^2 media:BLU-RAY^1.5

and I think that could achieve what you want.

JMTyler