You can also use functions to “compress” the source number, so that the effect of a certain boost becomes bigger or smaller compared to the other boost you have.
-- Jan Høydahl, search solution architect Cominvent AS - www.cominvent.com > 17. mar. 2016 kl. 23.21 skrev Upayavira <u...@odoko.co.uk>: > > Yes. Boosting adjusts an existing score. That original score can vary, > e.g. depending upon how many search terms there are. > > If you use additive boosting, when you add a boost to a search with one > term, (e.g. between 0 and 1) you get a different effect compared to when > you add the same boost to a search with four terms (e.g. between 0 and > 4). If, however, you used multiplicative boosting, the impact of the > boosts would be the same. > > If, for example, you want to add a recency boost, say with recip, where > the boost value is between 0 and 1, then use score*(1+boost). This way, > a boost of 0 has no effect on the score, whereas a boost of 1 doubles > the score. If you use plain multiplicative here, a boost of 0 wipes out > the score entirely, which can have nasty effects (it has, at least, for > me). > > Upayavira > > On Thu, 17 Mar 2016, at 06:58 PM, Walter Underwood wrote: >> Think about using popularity as a boost. If one movie has a million >> rentals and one has a hundred rentals, there is no additive formula that >> balances that with text relevance. Even with log(popularity), it doesn’t >> work. >> >> With multiplicative boost, we only care about the difference between the >> one rented one million time and the one rented 800 thousand times (think >> about the Twilight movies at Netflix). But it also distinguishes between >> the one rented 100 times and the one rented 80 times. >> >> wunder >> Walter Underwood >> wun...@wunderwood.org >> http://observer.wunderwood.org/ (my blog) >> >> >>> On Mar 17, 2016, at 11:29 AM, jimi.hulleg...@svensktnaringsliv.se wrote: >>> >>> Hi, >>> >>> After reading a bit on various sites, and especially the blog post >>> "Comparing boost methods in Solr", it seems that the preferred boosting >>> type is the multiplicative one, over the additive one. But I can't really >>> get my head around *why* that is so, since in most boosting problems I can >>> think of, it seems that an additive boost would suit better. >>> >>> For example, in our project we want to boost documents depending on various >>> factors, but in essence they can be summarized as: >>> >>> - Regular edismax logic, like qf=title^2 mainText^1 >>> - Multiple custom document fields, with weights specified at query time >>> >>> So, first of, the custom fields... It became obvious to me quite quickly >>> that multiplicative logic here would totally ruin the purpose of the >>> weights, since something like "(f1 * w1) * (f2 * w2)" is the same as "(f1 >>> * w2) * (f2 * w1)". So, I ended up using additive boost here. >>> >>> Then we have the combination of the edismax boost, and my custom boost. As >>> far as I understand it, when using the boost field with edismax, this >>> combination is always performed using multiplicative logic. But the same >>> problem exists here as it did with my custom fields. Because if I boost the >>> aggregated result of the custom fields using some weight, it doesn't affect >>> the order of the documents because that weight influences the edismax boost >>> just as much. What I want is to have the weight only influence my custom >>> boost value, so that I can control how much (or little) the final score >>> should be effected by the custom boost. >>> >>> So, in both cases I find myself wanting to use the additive boost. But >>> surely I must be missing something, right? Am I thinking backwards or >>> something? >>> >>> I don't use any out-of-the-box example indexes, so I can provide you with a >>> working URL that shows exactly what I am doing. But in essence my query >>> looks like this: >>> >>> - q=test >>> - defType=edismax >>> - qf=title^2&qf=mainText1^1 >>> - >>> totalRanking=div(sum(product(random1,1),product(random2,1.5),product(random3,2),product(random4,2.5),product(random5,3)),5) >>> - weightedTotalRanking=product($totalRanking,1.5) >>> - bf=$weightedTotalRanking >>> - fl=*,score,[explain style=text],$weightedTotalRanking >>> >>> random1 to random5 are document fields of type double, with random values >>> between 0.0 and 1.0. >>> >>> With this setup, I can change the overall importance of my custom boosting >>> using the factor in weightedTotalRanking (1.5 above). But that is only >>> because bf is additive. If I switch to the boost parameter, I can no longer >>> influence the order of the documents using this factor, no matter how high >>> a value I choose. >>> >>> Am I looking at the this the wrong way? Is there a much better approach to >>> achieve what I want? >>> >>> Regards >>> /Jimi >>