首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL选择概率喜欢-厌恶系统

问MySQL选择概率喜欢-厌恶系统
EN

Stack Overflow用户
提问于 2013-05-31 10:35:49
回答 1查看 801关注 0票数 0

我正在为我的博客网站创建一个YouTube评论风格(喜欢-厌恶)的应用程序。

我希望评论是随机排列的;但是,我希望根据喜欢与不喜欢的比例增加机会。例如:

5个赞和1个不喜欢的评论比4个赞和2个不喜欢的评论更有可能被选中,因为5/1比4/2更高。因此,喜欢-不喜欢的比率与被显示在评论区的机会成正比。

我使用的是PHP和MySQL。我需要帮助为此创建某种算法。我知道这很有挑战性,但如果您能想出某种MySQL查询来解决这个问题,那就太好了。:D

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-31 10:55:41

假设您有一个包含NumLikes和NumDislikes列的注释表。

您可以采用的一种简单方法是按比率(或按like降序的概率)对行进行排序,并偏向于选择较低的行而不是较高的行。

下面的代码随机选择一行,然后随机选择比该行更好的行。这会使选择过程偏向较好的行:

代码语言:javascript
复制
select *
from comments c cross join
     (select c.*
      from comments c
      order by rand() desc
      limit 1
     ) threshhold
where c.likes / (c.likes + c.dislikes) >= threshold.likes / (threshold.likes + threshold.dislikes)
order by rand()
limit 1

还有更复杂的技术。因为MySQL不支持窗口/分析函数,所以最容易使用临时表和多个查询来实现它们。然而,这种方法只需要一个查询,而不需要临时表。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16848924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档