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.

Reply via email to