问题标签 [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.
algorithm - 按流行度对歌曲列表进行排序
今年学生会,我是“歌曲”委员会的,我们挑选歌曲。不幸的是,舞会上的孩子们总是讨厌一些愚蠢的歌曲选择。我想今年我可以让它变得不一样。上周四,我创建了一个简单的 PHP 应用程序,这样孩子们就可以将歌曲提交到数据库中,提供歌曲名称、艺术家和流派(从下拉列表中)。我还实现了类似于 Reddit 的投票功能。点击一个upvote按钮,你已经为这首歌投票,增加了upvote计数。与否决票相同。
任何人,在数据库中,我有三个信息,我认为我可以用来对这些歌曲进行评分,赞成票,反对票和时间戳。有一段时间,排名是通过简单地将“票数”较高的歌曲放在顶部来创建的。也就是说,赞成票越多,反对票越少(赞成票 - 反对票)将位于列表顶部。这在一段时间内奏效了,但到周日为止,列表中大约有 75 首歌曲,而最先提交的歌曲只是在列表的顶部。
周日,我将排名算法更改为 (upvotes - downvotes) / (CurrentTimestamp - CreationTimestamp),也就是说,在更短的时间内投票数越高,歌曲在列表中的排名就越高。这工作,更好,但仍然不是我想要的。
现在发生的情况是,一首歌曲被创建并被投票支持为 1 的那一刻,它最终在某个地方的列表顶部。由于孩子通常不会滚动到底部,因此不会经常查看投票数为负数的歌曲。
我想我可以对数据进行排序,使较低的歌曲出现在顶部,因此人们被迫看到较低的歌曲。老实说,我以前从来没有研究过“流行”算法,那么,你的想法是什么?
网站在http://www.songs.taphappysoftware.com - 我不知道我是否应该把它放在这里,可能会在舞会上导致一些不需要的歌曲:0
mysql - 维护排名表的最佳实践?
使用 MySQL 和 PHP,我有一个包含 2 列user
和score
.
每周一次,我重新运行排名脚本并计算每个用户的分数。
- 许多用户有新的分数
- 有些没有
- 有时会有新用户添加到表中
用 MySQL 解决这个问题的最佳方法是什么?update
如果我需要添加新行,是否有效?是否会insert
覆盖现有行,以便我可以再次插入整个表?最好只是删除表并从头开始重新编写它吗?
除了成千上万的用户...
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 上提供似乎很有价值。)
相关问题:
sql - MYSQL 根据另一个表中的几个不同值从一个表中选择 5 条记录
我绝不会流利地使用MYSQL。我想要做的是我有一个表格,其中包含具有唯一 ID 号的画廊列表。我有另一个表 ImageData,其中包含与第一个表中的每个 GalleryID 相关的图像可能多达 1000 个。我想做一个从每个 GalleryID 中获取 5 条随机记录的选择。我正在尝试在不执行循环和多次访问数据库的情况下执行此操作。
表格如下画廊 -> GalleryID -> GalleryName
ImageData -> ImageID -> ImageName -> GalleryID
我希望这是有道理的。
php - mysql。随机订购位置并加入列表
我有两个表:位置和列表。
地点
id
title
address
latitude
longitude
列表
id
location
info
status
这将按用户提供的纬度和经度按位置顺序列出位置。工作完美,但我真正想做的是..
- 每个位置列出一个“列表”,并使位置保持有序。
- 如果一个位置有多个“列表”,则它是完全随机的。
在一个 SQL 查询中完成这一切会更好吗?或者填充至少有一个“列表”的所有位置,然后使用另一个查询为该位置选择一个随机“列表”?
更新
提供创建表:
sql - 如何在具有相同ID的结果中获得mysql排名
快速提问,我有一个消息表,每个消息都带有时间戳、reply_id 和 topic_id。Reply_ids 可以与其他消息相同,这意味着这些消息在同一组回复中。当我选择一个带有最小时间戳的 reply_id 时,这意味着它是该组的第一条消息,我还想知道它在该 topic_id 的所有结果中的编号位置,例如。3rd (3) 4th(4) 等等。有人知道怎么做或者有什么建议吗?这可以在纯sql中完成吗?
sql - 基于项目点击次数的 MySQL 查询帮助
我有一个这样的表设置(例如简化):
每个 item_id 都有许多 user_id。基本上,它存储与 user_id 关联的项目的点击次数。
我想通过这个查询并仅列出每个 item_id 的最新 user_id,基于 click_dt。
因此,如果 item_id 55 有 5 次点击,则最后一次点击或 click_dt DESC 将是要显示的记录....
有道理?任何帮助都会很棒...谢谢!
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 是一项非常困难的成就。
任何简单的片段或提示?
谢谢
sql - 为每个类别选择 N 条记录并按 X 排序
我有一个包含博客文章的数据库表。我想在主页上显示每个类别的一个(或多个)帖子,例如按日期排序。
所以我的帖子表如下所示:id | title | description | cat | filename | date
我将如何创建这样的查询?我曾考虑过使用 group-by 或 subselect,但我不确定这是否对性能有好处……该表有大量记录。