2012-05-05 3 views
2

좋아요, 댓글, 재 게시 횟수 및 수신 시간을 기준으로 소셜 네트워크의 간단한 순위 알고리즘을 개발하려고합니다. 나는 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 

사람이 더 나은 솔루션이 있습니까 : 여기

내가 시도 무엇인가?

+0

알고리즘에 어떤 문제가 있습니까? 수식 구조가 합리적으로 보입니다. 매개 변수에 문제가 있습니까? – Mathias

답변

3

PageRank algorithm을 사용하면 모든 사람에게 인기를 얻으실 수 있습니다. 이 알고리즘은 링크를 사용하여 웹 사이트의 순위를 매기기 위해 고안되었지만 링크 대신 의견, 재 게시 및 좋아하는 항목을 사용할 수 있습니다.

PageRank가 구현하기가 어렵다고 생각하는 경우 (데이터 크기 때문에) opic algorithm을 사용하면 동일한 결과를 생성하지만 메모리가 훨씬 적게 필요합니다.