问题标签 [ranking]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2191 浏览

algorithm - 按流行度对歌曲列表进行排序

今年学生会,我是“歌曲”委员会的,我们挑选歌曲。不幸的是,舞会上的孩子们总是讨厌一些愚蠢的歌曲选择。我想今年我可以让它变得不一样。上周四,我创建了一个简单的 PHP 应用程序,这样孩子们就可以将歌曲提交到数据库中,提供歌曲名称、艺术家和流派(从下拉列表中)。我还实现了类似于 Reddit 的投票功能。点击一个upvote按钮,你已经为这首歌投票,增加了upvote计数。与否决票相同。

任何人,在数据库中,我有三个信息,我认为我可以用来对这些歌曲进行评分,赞成票,反对票和时间戳。有一段时间,排名是通过简单地将“票数”较高的歌曲放在顶部来创建的。也就是说,赞成票越多,反对票越少(赞成票 - 反对票)将位于列表顶部。这在一段时间内奏效了,但到周日为止,列表中大约有 75 首歌曲,而最先提交的歌曲只是在列表的顶部。

周日,我将排名算法更改为 (upvotes - downvotes) / (CurrentTimestamp - CreationTimestamp),也就是说,在更短的时间内投票数越高,歌曲在列表中的排名就越高。这工作,更好,但仍然不是我想要的。

现在发生的情况是,一首歌曲被创建并被投票支持为 1 的那一刻,它最终在某个地方的列表顶部。由于孩子通常不会滚动到底部,因此不会经常查看投票数为负数的歌曲。

我想我可以对数据进行排序,使较低的歌曲出现在顶部,因此人们被迫看到较低的歌曲。老实说,我以前从来没有研究过“流行”算法,那么,你的想法是什么?

网站在http://www.songs.taphappysoftware.com - 我不知道我是否应该把它放在这里,可能会在舞会上导致一些不需要的歌曲:0

0 投票
3 回答
338 浏览

mysql - 维护排名表的最佳实践?

使用 MySQL 和 PHP,我有一个包含 2 列userscore.

每周一次,我重新运行排名脚本并计算每个用户的分数。

  • 许多用户有新的分数
  • 有些没有
  • 有时会有新用户添加到表中

用 MySQL 解决这个问题的最佳方法是什么?update如果我需要添加新行,是否有效?是否会insert覆盖现有行,以便我可以再次插入整个表?最好只是删除表并从头开始重新编写它吗?

除了成千上万的用户...

0 投票
2 回答
3344 浏览

sql - 在 SQL 中实现 Hacker News 排名算法

以下是Paul Graham 如何描述 Hacker News 的排名算法

News.YC的只是

(p - 1) / (t + 2)^1.5

其中 p = 点数和 t = 年龄(以小时为单位)

鉴于下表,我想在纯 mySQL 中执行此操作:

  • 具有字段 postID(索引)和 postTime(时间戳)的表 Posts。
  • 带有字段 voteID(索引)、postID 和 vote(整数,0 或 1)的投票表。

投票字段的想法是可以撤销投票。就排名而言,vote=0 相当于根本没有投票。(所有投票都是赞成票,没有反对票。)

问题是如何构造一个返回前 N 个 postID 的查询,按 Paul Graham 的公式排序。总共大约有 100k 个帖子,所以如果您认为需要缓存分数或其他任何内容,我很乐意听取有关此方面的建议。

(显然这不是火箭科学,我当然可以弄清楚,但我认为早餐、午餐和晚餐都吃 SQL 的人可能会喋喋不休。而且在 StackOverflow 上提供似乎很有价值。)


相关问题:

0 投票
1 回答
797 浏览

sql - MYSQL 根据另一个表中的几个不同值从一个表中选择 5 条记录

我绝不会流利地使用MYSQL。我想要做的是我有一个表格,其中包含具有唯一 ID 号的画廊列表。我有另一个表 ImageData,其中包含与第一个表中的每个 GalleryID 相关的图像可能多达 1000 个。我想做一个从每个 GalleryID 中获取 5 条随机记录的选择。我正在尝试在不执行循环和多次访问数据库的情况下执行此操作。

表格如下画廊 -> GalleryID -> GalleryName

ImageData -> ImageID -> ImageName -> GalleryID

我希望这是有道理的。

0 投票
1 回答
146 浏览

php - mysql。随机订购位置并加入列表

我有两个表:位置和列表。

地点
id title address latitude longitude

列表
id location info status

这将按用户提供的纬度和经度按位置顺序列出位置。工作完美,但我真正想做的是..

  1. 每个位置列出一个“列表”,并使位置保持有序。
  2. 如果一个位置有多个“列表”,则它是完全随机的。

在一个 SQL 查询中完成这一切会更好吗?或者填充至少有一个“列表”的所有位置,然后使用另一个查询为该位置选择一个随机“列表”?

更新

提供创建表:

0 投票
1 回答
340 浏览

sql - 如何在具有相同ID的结果中获得mysql排名

快速提问,我有一个消息表,每个消息都带有时间戳、reply_id 和 topic_id。Reply_ids 可以与其他消息相同,这意味着这些消息在同一组回复中。当我选择一个带有最小时间戳的 reply_id 时,这意味着它是该组的第一条消息,我还想知道它在该 topic_id 的所有结果中的编号位置,例如。3rd (3) 4th(4) 等等。有人知道怎么做或者有什么建议吗?这可以在纯sql中完成吗?

0 投票
2 回答
57 浏览

sql - 基于项目点击次数的 MySQL 查询帮助

我有一个这样的表设置(例如简化):

每个 item_id 都有许多 user_id。基本上,它存储与 user_id 关联的项目的点击次数。

我想通过这个查询并仅列出每个 item_id 的最新 user_id,基于 click_dt。

因此,如果 item_id 55 有 5 次点击,则最后一次点击或 click_dt DESC 将是要显示的记录....

有道理?任何帮助都会很棒...谢谢!

0 投票
2 回答
1305 浏览

python - 30级的Python排名算法

我试图找到一个简单的基于 python 的算法排名系统。

这是场景:

将有 30 个级别,级别 1 从 0 点开始。达到30级需要2000点。

随着水平的进步,将需要更多的积分。

例如,从 1 级到 2 级可能需要 3 分。2 到 3 级可能需要 5 分。29-30 级可能需要 1200 额外积分。

由于分数是即时计算的,所以我还需要一种方法来确定玩家所处的级别。例如,358分的人是什么级别?

我可以手动设置积分,但 2000 积分上限会每天波动,所以这不是一个理想的选择。

我在想类似于 Google 的 Pagerank (1-10) 的东西,从 0 到 4 很容易获得,但 9-10 是一项非常困难的成就。

任何简单的片段或提示?

谢谢

0 投票
2 回答
1369 浏览

sql - 为每个类别选择 N 条记录并按 X 排序

我有一个包含博客文章的数据库表。我想在主页上显示每个类别的一个(或多个)帖子,例如按日期排序。

所以我的帖子表如下所示:id | title | description | cat | filename | date

我将如何创建这样的查询?我曾考虑过使用 group-by 或 subselect,但我不确定这是否对性能有好处……该表有大量记录。

0 投票
1 回答
1185 浏览

php - PHP顺序编号

我的页面在这里遇到问题:

关联

当您单击第 2 页及以后的页面时,表格的“排名”部分会一直重置为零。它不是从 21 开始的,它只是重置为零。

我该如何解决?