社交网络排名算法

4
我将尝试开发一种简单的排名算法,基于社交网络上帖子获得的点赞数、评论数、转发数和时间。我已经阅读了Facebook使用的Edge Rank算法,并尝试做类似的事情,但我无法做到完美。
该算法应该显示当前热门帖子。
以下是我的尝试:
let nComments = (from c in db.Comments where c.postid == r.pageOwner.PostId select c).Count()

let nReposts = (from s in db.Posts where s.RepostedFrom_postid == r.pageOwner.PostId select s).Count()

let nLikes = (from u in db.UserPageRelations where u.Post_id == r.pageOwner.PostId select u).Sum(s => s.Rate)

let TimeDecayFactor = ignoretime ? 1 : Math.Exp(-(DateTime.Now - Post.Date).TotalHours)

let TotalEdge = (1 * nComments + 3 * nLikes + 2 * nReposts + 1) * TimeDecayFactor

 orderby (TotalEdge) descending

有没有更好的解决方案?


你的算法有什么问题?公式结构看起来合理,你的参数有问题吗? - Mathias
1个回答

4
你可以使用PageRank算法为每个人赋予受欢迎程度。该算法是设计用于通过网站之间的链接对其进行排名,但是您可以使用评论、转发和点赞(具有不同的系数)代替链接。
如果您认为由于数据量太大而难以实现PageRank(因为数据规模),则可以使用Opic算法,它会产生相同的结果,但需要显著较少的内存。

你好@Thomash,但页面排名不是基于对象之间的连接(在这种情况下是页面)吗?对于独立的文章,它是如何工作的? - RodParedes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接