How to correctly boost results in Solr Dismax query

17,225

Solution 1

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.

Solution 2

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

If you are 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.

Share:
17,225
cubabit
Author by

cubabit

Updated on June 04, 2022

Comments

  • cubabit
    cubabit almost 2 years

    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?