I just typed a really clever, complicated method that solves some of the issues... then accidently hit the "Back" button on my keyboard (cunning located next to the up arrow) and lost the whole thing... Darn. Hopefully, I'll get it right again this time...
I have done that before. I once figured out the answer to life the universe and everything but completely forgot it. For some reason the number 42 keeps coming to mind.
Rocketeer wrote:MKruer wrote:If there is a history being kept for each user that you vote on (say 20+ posts) then you can calculate the weight of that person, specifically. It would be the combined weight that would result in the real rating.
That's a pretty good idea... I think it would work, and get around the "nice to friends, nasty to enemies" issue, but I don't know if there would be too much data for it to be successfully implemented. I don't know enough about MySQL performance to comment too much, but it could quickly grow out of control - anyone know better (say a 3 column table, with User1, User2 and Average Karma)?
I believe the max value for a record table and SQL is 4 billion (2^32) currently, so this could be a huge problem.
Rocketeer wrote:MKruer wrote:So something like for ever positive response give a add a multiplier ratio value?
I was more thinking along these lines...
One way of doing this would be to record the Min, Max and Average karma rating for each post. The average should ignore the minimum and maximum rating - so you'd need at least 3 ratings before the post had an average. If user X rates a post above the current Max or below the current Min, he should get no karma weight change. If he rates it within (say) 2 points of the average, he should get a positive karma weight change.
- User A posts a message - no karma change
- User B rates it 7 - no karma change, he could be being nice or nasty, no way of knowing
- User C rates it 3 - still no karma change, because there's no way of knowing which of B and C was being accurate.
- User D rates it 8 - now B and D should be rewarded, and/or C punished, because the consensus is clearly around the 7/8 mark, not 3.
This way, if one person has an extreme opinion on the post, it will get ignored, but if there's an even split through the community, the average will reflect that.
The problem I see with this is that I feel you are inherently punishing people if anyone marks lower than the average. With what I was trying to do I was just trying to set up a ratio between good and bad but not punish people for making those marks.
Rocketeer wrote:MKruer wrote:The big trick is to make it impossible to go above 10 or below 0.
True... but you can cheat by limiting the values in code, so that anything above 10 is reduced to 10, and anything below 0 is increased to 0... or you could just have an infinite scale...
Two things first by coding the system of not go above 10 or below 0 in my opinion is a brute force solution. If the system requires us to me this is obviously a wrong system. The system should be inherently limited to the range. This may be more difficult but in the end it will be much more elegant and most likely much simpler to code. The trick is to find a way to accomplish the desired results simplistically.
Rocketeer wrote:Hmmm... you've got me thinking a lot about this... which is silly, because I would probably never implement a karma system on any of my forums (my users would try to abuse it, fail, then get bored and not bother with it at all).
I feel this is partially true. However that is why I specified just by posting a reply the minimum value the preceding post would receive is a five. This would mean that the post was considered average and not worth judging it either way however if someone didn't take the time to rate the post this rating could then be used to find relevant information based upon what other people have read.
if you'd like to help perhaps it would be best to start building all the equations for the system from the ground up this would mean going back to the very fundamental rating system and how to determine weight of authority.