Search code examples
phpmysqlalgorithmrating-system

Good rating/reputation systems?


I am working on a website which is quite similar to Yahoo! Answers: an user can post the question, wait for answers from other people and pick the better one. In order to identify the best users, there is a reputation system, which has these features:

  • One can upvote or downvote an user;
  • One can upvote or downvote an answer;
  • There is an "experience" score for each topic, which increases for every question answered.

Now, if possible, I'd like to find an algorithm to combine all these factors and give a "trustability" score for each answer.

So far, I tried doing it by myself using things like products of Coefficient * (UpVotes / TotalVotes), but it was too linear. I also tried other ways, but they didn't work (Bayesian algorithm). At the moment, in the Alpha version, I'm using Trustability = sqrt(GoodAnswers).

Notes: the algorithm must be individual (no need to scan the entire database to get data like averages, sums, etc) and fast, if possible. I'm going to implement this in PHP-MySQL.


Solution

  • There are huge number of approaches to ranking system. With using time dimension, up/down votes number, rating of upvoters and downvoters, hits and almost anything that you can imagine.

    There is a good article about ranking system in Reddit.

    The most straightforward solution that came up in my mind is to calculate some weight of upvote for individual user. That means that more trusted user is more influential than another one. E.g. user with rating 100 upvote is definitely better than downvote from two users with rating -100. But we can't say that this is better than 100 downvotes from -100 users. try to experiment wit that.