gpt4 book ai didi

mysql - MySQL 中 Reddit 风格分数随时间下降

转载 作者:行者123 更新时间:2023-11-29 02:45:19 25 4
gpt4 key购买 nike

我正在尝试为系统上的条目创建一个 reddit 风格的评分降级系统。我有一个 MySQL View 设置来计算总“分数”(所有赞成/反对票的总和)。我在创建一个简单但有效的系统来将条目向下移动到页面时遇到了麻烦(这样较新的条目最终会出现在顶部,但是高分可以将条目移动到顶部,否则这些条目就会老化)...

这是迄今为止我能够创建的最接近的 SQL:

(SUM(v.Score) - (TIMESTAMPDIFF(MINUTE, t.Genesis, NOW()) *
IF(TIMESTAMPDIFF(MINUTE, t.Genesis, NOW()) > 1440,
0.1, 0.003))
) as "Weight",

v.Score 是 1 或 -1,取决于用户投票。 t.Genesis 是条目本身的时间戳。

如有任何帮助或建议,我们将不胜感激。

最佳答案

一个解决方案可能是使用一种时间相关性的指数衰减作为排名参数。例如:

SELECT 
article, ranking
FROM (
SELECT
article,
(upvotes + downvotes) AS Total,
(upvotes - downvotes) AS Score,
(EXP(-(Published - Genesis) * Constant / 86400) * (Score / Total)) AS Ranking
FROM Table)
ORDER BY ranking DESC

其中 Published 是发布时间,Genesis 是某个真正早的日期,而 Constant 是比例因子,用于确定有多晚权重应在以下位置降为零:

例如:如果您想在 7 天后(比如 0.1)为所有帖子提供非常小的分数优势,则 -ln(0.1)/7 是你的常量

Score/Total 表示平均评分而不是绝对值,86400 表示一天的秒数(假设您是这样计算时间的)。

再次对我对SQL函数的了解表示歉意,我知道EXP是绝对可以的,只有调整时差函数才能得到以秒为单位的时差。

关于mysql - MySQL 中 Reddit 风格分数随时间下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43339024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com