3

いいね、コメント、再投稿の数と時間に基づいて、ソーシャルネットワークの簡単なランキングアルゴリズムを開発しようとしています。Facebookが使用しているエッジランクアルゴリズムについて読んでいて、似たようなことをしようとしましたが、正しく理解できません。

アルゴリズムは今人気のある投稿を表示するはずです。

これが私が試したことです:

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

誰かがより良い解決策を持っていますか?

4

1 に答える 1

4

PageRankアルゴリズムを使用して、すべての人に人気を与えることができます。このアルゴリズムは、Webサイト間のリンクを使用してWebサイトをランク付けするように設計されていますが、リンクの代わりにコメント、再投稿、およびいいね(係数が異なる)を使用できます。

PageRankを実装するのが難しすぎると思われる場合(データのサイズが原因で)、同じ結果を生成するが必要なメモリが大幅に少ないopicアルゴリズムを使用できます。

于 2012-05-05T14:56:33.650 に答える