Ayende @ Rahien

It's a girl

The difference between Ordering & Boosting

This seems to be a pretty common issue with people getting the two of them confused. As an example, let us take the users in Stack Overflow:

image

Here, we want to get the users in order. We want to get all the users in descending order of reputation.

But what happens when we want to do an actual search, for example, we want to get users by tag. Perhaps we want to get someone that knows some ravendb.

Here is the data that we have to work with:

image

Now, when searching, we want to be able to do the following. Find users that match what the tags that we specified, that are relevant and have them show up in reputation order.

And that is where it kills us. Relevancy & order are pretty much exclusive. Before we can explain that, we need to understand that order is absolute, but relevancy is not. If I have 10,000 tags, there is very little meaning to me having a tag or not. But if I have 10 tags, me having a tag or not is a lot more important. You want to talk with an expert in a specific field, not just someone who is a jack of all trades.

Now, it might be that you want to apply some boost factor to users with high reputation, because there are people who are jack of all trades and master of most. That is the difference between boosting and ordering.

Ordering is absolute, while boosting is a factor applied against the relative relevancy of the current query.

Tags:

Posted By: Ayende Rahien

Published at

Originally posted at

Comments

a
05/16/2013 11:00 AM by
a

Somewhat disagree, see Bayesian ranking for more info.

Zac
05/16/2013 06:26 PM by
Zac

Can you provide an example of how you would implement a boost that would work in this way?

Ayende Rahien
05/16/2013 06:45 PM by
Ayende Rahien

Zac, Probably just something like:

from user in docs.Users select new { user.Name }.Boost(Math.Log(user.Reputation));

Comments have been closed on this topic.