首页 新闻 会员 周边

关于《基于用户投票的排名算法》这篇文章的排序问题

1
悬赏园豆:20 [待解决问题]

最近在博客园上看到这篇文章《基于用户投票的排名算法》,真的很不错,开了眼界,但心里突然有个问题,如果这种复杂的排名算法,如果用到自己的系统中,我如何去排序呢,肯定不是用关系型数据库去写存储过程,牛人们能给我解惑吗?

Sphix的主页 Sphix | 初学一级 | 园豆:79
提问于:2012-04-04 17:17
< >
分享
所有回答(3)
1

不是牛人,只谈点自己看法:

数据库中只是存放基本数据,根据自己选择的排名算法从数据库中取得数据,然后在程序中计算处理

artwl | 园豆:16736 (专家六级) | 2012-04-04 18:51

几千数据还可以,十万,几十万数据,你怎么办?

支持(0) 反对(0) Sphix | 园豆:79 (初学一级) | 2012-04-04 22:47

@Shpix: 这个看需求了,我目前的做法是用专门的表存这些数据,字段很少,就是用空间换时间的做法,另外会加上缓存

支持(0) 反对(0) artwl | 园豆:16736 (专家六级) | 2012-04-04 22:53

@artwl: 专门表?我是不太明白,你专门的表进行排序,可是排序的算法逻辑是在程序计算的,你难道把几万条数据取进内存,来排序计算?

支持(0) 反对(0) Sphix | 园豆:79 (初学一级) | 2012-04-04 22:57

@Shpix: 真实的情况是,一般都根据一定的条件(如取一段时间内的数据)进行排序,所以数据量不会很大的。另外对于那些要整体排序的,会加上缓存,因为整体排序虽然数据量大,但变动不会很频繁

支持(0) 反对(0) artwl | 园豆:16736 (专家六级) | 2012-04-04 23:01

@artwl: 谢谢,说得有点道理。先不结贴,看还有人有新的想法没。

支持(0) 反对(0) Sphix | 园豆:79 (初学一级) | 2012-04-04 23:04
-1

关注,学习。。。

KivenRo | 园豆:1734 (小虾三级) | 2012-04-05 09:08
-1

我觉得这些个算法,都是在票数发生变化时对于当前记录进行重新计算,得出新的得分,如果有对于时间段限制的,也是根据公式进行计算,最终得出每条记录的最新得分,并且保存各个时间段的积分。排序的时候应该是按照积分排序,并不是每次都根据公式现去计算,那样资源也不够哇。

计算应该是在每条记录上,排序的时候只是根据字段进行排序分页就行了。

迷路中的路人甲 | 园豆:93 (初学一级) | 2012-04-06 08:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册