MYSQL 按喜欢/不喜欢和受欢迎程度排序
Posted
技术标签:
【中文标题】MYSQL 按喜欢/不喜欢和受欢迎程度排序【英文标题】:MYSQL order by like/dislikes and popularity 【发布时间】:2016-03-10 17:39:34 【问题描述】:我有包含喜欢和不喜欢的 cmets 表,现在我的顺序有问题..
实际上,我的系统显示最喜欢的 cmets 在顶部。
我正在 youtube 中寻找类似系统的东西。
这意味着100like/100dislikes的评论顺序高于1/1..
我希望这是可以理解的:)
【问题讨论】:
你应该阅读similiar question和How Not To Sort By Average Rating 【参考方案1】:这是如何对赞成/反对、加/减、喜欢/不喜欢等进行排名的经典问题。有几种可能的解决方案,但在特定条件下它们可能会给出错误的结果。
我强烈建议阅读和使用 How Not To Sort By Average Rating
问题:
你需要某种“分数”来排序。
错误的解决方案 #1:分数 =(正面评分)-(负面评分)
错误的解决方案 #2: 分数 = 平均评分 =(正面评分)/ (总评分)
正确的解决方案: 得分 = Wilson 得分置信度的下限 伯努利参数的区间
示例代码(您可以根据需要轻松调整):
SELECT id, ((positive + 1.9208) / (positive + negative) -
1.96 * SQRT((positive * negative) / (positive + negative) + 0.9604) /
(positive + negative)) / (1 + 3.8416 / (positive + negative))
AS ci_lower_bound
FROM your_tab
WHERE positive + negative > 0
ORDER BY ci_lower_bound DESC;
【讨论】:
以上是关于MYSQL 按喜欢/不喜欢和受欢迎程度排序的主要内容,如果未能解决你的问题,请参考以下文章