我正在为我的博客网站创建一个 YouTube 评论风格(喜欢-不喜欢)PHP 应用程序。
我希望评论随机排列;但是,我希望根据喜欢与不喜欢的比率来增加机会。例如:
5 个喜欢和 1 个不喜欢的评论被选中的机会比 4 个喜欢和 2 个不喜欢的评论更有可能被选中,因为 5/1 高于 4/2。因此,喜欢不喜欢的比率与在评论部分显示的机会成正比。
我正在使用 PHP 和 MySQL。我需要帮助来为此创建某种算法。我知道这很有挑战性,但如果您能为此想到某种 MySQL 查询,那就太好了。:D
我正在为我的博客网站创建一个 YouTube 评论风格(喜欢-不喜欢)PHP 应用程序。
我希望评论随机排列;但是,我希望根据喜欢与不喜欢的比率来增加机会。例如:
5 个喜欢和 1 个不喜欢的评论被选中的机会比 4 个喜欢和 2 个不喜欢的评论更有可能被选中,因为 5/1 高于 4/2。因此,喜欢不喜欢的比率与在评论部分显示的机会成正比。
我正在使用 PHP 和 MySQL。我需要帮助来为此创建某种算法。我知道这很有挑战性,但如果您能为此想到某种 MySQL 查询,那就太好了。:D
让我假设您有一个评论表,其中包含 和 之类的NumLikes
列NumDislikes
。
您可以采用的一种简单方法是按比率(或按降序的概率)对行进行排序,并在选择较低的行而不是较高的行时有所偏差。
下面随机选择一行,然后随机选择比该行更好的一行。这会使选择过程偏向更好的行:
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 不支持窗口/分析函数,所以它们最容易用临时表和多个查询来实现。然而,这种方法只需要一个查询并且不需要临时表。