Hi, first of all, are you sure that row.put('$docBoost',docBoostVal) is correct?
I think it should be row.put($docBoost,docBoostVal); - unfortunately I am not sure. Hm, I think, until you can solve the problem with the docBoosts itself, you should use a functionQuery. Use "div(1, rank)" as boost function (bf). The higher the rank value, the smaller the result. Hope this helps! - Mitch dbashford wrote: > > Brand new to this sort of thing so bear with me. > > For sake of simplicity, I've got a two field document, title and rank. > Title gets searched on, rank has values from 1 to 10. 1 being highest. > What I'd like to do is boost results of searches on title based on the > documents rank. > > Because it's fairly cut and dry, I was hoping to do it during indexing. I > have this in my DIH transformer.. > > var docBoostVal = 0; > switch (rank) { > case '1': > docBoostVal = 3.0; > break; > case '2': > docBoostVal = 2.6; > break; > case '3': > docBoostVal = 2.2; > break; > case '4': > docBoostVal = 1.8; > break; > case '5': > docBoostVal = 1.5; > break; > case '6': > docBoostVal = 1.2; > break; > case '7': > docBoostVal = 0.9; > break; > case '8': > docBoostVal = 0.7; > break; > case '9': > docBoostVal = 0.5; > break; > } > row.put('$docBoost',docBoostVal); > > It's my understanding that with this, I can simply do the same /select > queries I've been doing and expect documents to be boosted, but that > doesn't seem to be happening because I'm seeing things like this in the > results... > > {"title":"Some title 1", > "rank":10, > "score":0.11726039}, > {"title":"Some title 2", > "rank":7, > "score":0.11726039}, > > Pretty much everything with the same score. Whatever I'm doing isn't > making its way through. (To cover my bases I did try the case statement > with integers rather than strings, same result) > > > > > > With that not working I started looking at other options. Starting > playing with dismax. > > I'm able to add this to a query string a get results I'm somewhat > expecting... > > bq=rank:1^3.0 rank:2^2.6 rank:3^2.2 rank:4^1.8 rank:5^1.5 rank:6^1.2 > rank:7^0.9 rank:8^0.7 rank:9^0.5 > > ...but I guess I wasn't expecting it to ONLY rank based on those factors. > That essentially gives me a sort by rank. > > Trying to be super inclusive with the search, so while I'm fiddling my > mm=1<1. As expected, a q= like q=red door is returning everything that > contains Red and door. But I was hoping that items that matched "red > door" exactly would sort closer to the top. And if that exact match was a > rank 7 that it's score wouldn't be exactly the same as all the other rank > 7s? Ditto if I searched for "q=The Tales Of", anything possessing all 3 > terms would sort closer to the top...and possessing two terms behind > them...and possessing 1 term behind them, and within those groups weight > heavily on by rank. > > I think I understand that the score is based entirely on the boosts I > provide...so how do I get something more like what I'm looking for? > > > > > Along those lines, I initially had put something like this in my > defaults... > > <str name="bf"> > rank:1^10.0 rank:2^9.0 rank:3^8.0 rank:4^7.0 rank:5^6.0 rank:6^5.0 > rank:7^4.0 rank:8^3.0 rank:9^2.0 > </str> > > ...but that was not working, queries fail with a syntax exception. > Guessing this won't work? > > > > Thanks in advance for any help you can provide. > > -- View this message in context: http://lucene.472066.n3.nabble.com/Document-boosting-troubles-tp902982p903190.html Sent from the Solr - User mailing list archive at Nabble.com.