Order database results by bayesian rating
Posted
by
One Trick Pony
on Stack Overflow
See other posts from Stack Overflow
or by One Trick Pony
Published on 2011-11-21T16:18:50Z
Indexed on
2011/11/21
17:50 UTC
Read the original article
Hit count: 259
I'm not sure this is even possible, but I need a confirmation before doing it the "ugly" way :)
So, the "results" are posts inside a database which are stored like this:
- the posts table, which contains all the important stuff, like the ID, the title, the content
- the post meta table, which contains additional post data, like the rating (
this_rating
) and the number of votes (this_num_votes
). This data is stored in pairs, the table has 3 columns: post ID / key / value. It's basically the WordPress table structure.
What I want is to pull out the highest rated posts, sorted based on this formula:
br = ( (avg_num_votes * avg_rating) + (this_num_votes * this_rating) ) / (avg_num_votes +
this_num_votes
)
which I stole form here.
avg_num_votes
and avg_rating
are known variables (they get updated on each vote), so they don't need to be calculated.
Can this be done with a mysql query? Or do I need to get all the posts and do the sorting with PHP?
© Stack Overflow or respective owner