Jor*_*anc 10 php mysql algorithm rating-system
所以我正在研究威尔逊的得分间隔,以便在我的网站上整理趋势内容,但现在它只是静态的.我的意思是它会一直保持相同的分数,直到有人投票或投票.
这就是我想要实现分数随时间减少的原因.喜欢这篇文章.Reddit排名算法的工作原理.在那篇文章中,他们解释了内容的Reddit得分随着时间的推移而降低.
目前我有这个PHP功能,给我一个基于上下投票的分数:
function wilsonScore($up, $down)
{
$score = (($up + 1.9208) / ($up + $down) - 1.96 * sqrt(($up * $down) /
($up + $down) + 0.9604) / ($up + $down)) / (1 + 3.8416 / ($up + $down)) ;
return $score;
}
Run Code Online (Sandbox Code Playgroud)
我希望得分是相同的,但在整理时添加一些东西给SQL代码.
SQL代码如下所示:
SELECT *
FROM photos
WHERE status = 0
AND net_votes > 0 // display only picture that got rated over 0
ORDER BY score DESC
Run Code Online (Sandbox Code Playgroud)
我的想法是最终得到一个算法,该算法会以对数方式降低分数,发布时间的前1-2-3天不会影响分数,然后分数开始下降.
从理论上讲,在分数中添加一些内容是否可行,以便用户在网站上获得的声誉(如SO)越多,他的评分值越高?在互联网上做过类似的事吗?
有人在这里已经使用过这样的东西吗?
小智 0
因此,本质上,您每次调用该函数时都会生成该分数,并在每次显示该函数时调用该函数?那么我要做的是使用以下成员创建一个分数对象,反映数据库中的某些行
$score->id; //int
$score->score; //float
$score->up; //int
$score->down; //int
$score->last_vote; //timestamp
Run Code Online (Sandbox Code Playgroud)
从那里每次有人投票赞成或反对时,您都会处理一个新的分数。您不必在每次有人查看它时都重新处理它,除非您也想考虑这一点。您还可以每天运行一次 cron 作业,以惩罚长时间未更新的分数。
| 归档时间: |
|
| 查看次数: |
1165 次 |
| 最近记录: |