我正在为我的博客网站创建一个YouTube评论风格(喜欢-厌恶)的应用程序。
我希望评论是随机排列的;但是,我希望根据喜欢与不喜欢的比例增加机会。例如:
5个赞和1个不喜欢的评论比4个赞和2个不喜欢的评论更有可能被选中,因为5/1比4/2更高。因此,喜欢-不喜欢的比率与被显示在评论区的机会成正比。
我使用的是PHP和MySQL。我需要帮助为此创建某种算法。我知道这很有挑战性,但如果您能想出某种MySQL查询来解决这个问题,那就太好了。:D
发布于 2013-05-31 10:55:41
假设您有一个包含NumLikes和NumDislikes列的注释表。
您可以采用的一种简单方法是按比率(或按like降序的概率)对行进行排序,并偏向于选择较低的行而不是较高的行。
下面的代码随机选择一行,然后随机选择比该行更好的行。这会使选择过程偏向较好的行:
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不支持窗口/分析函数,所以最容易使用临时表和多个查询来实现它们。然而,这种方法只需要一个查询,而不需要临时表。
https://stackoverflow.com/questions/16848924
复制相似问题