我被要求在PHP中使用现有的基本新闻源代码更聪明一些。也许具有相关性和多样性。客户不确定自己,他只是想要像Facebook的新闻源一样聪明(有点)。我发现了这个(可能过时但有一些线索)
其中:
Sigma - 每个边缘的总和。边缘是一个可以显示在您的新闻Feed中的故事,如状态更新,评论,赞,标记等。
u - 亲和力分数。这个因素会影响您与发布帖子的距离。如果您经常与发帖人,多个共同朋友或相关人员进行互动,Facebook更有可能给予该内容更高的权重。
w - 此边缘的重量。在Facebook的算法眼中,并非所有行为都被认为是平等的。例如,创建状态更新的朋友比仅仅喜欢状态更新的人更重要。
d - 时间衰减因子。随着帖子越来越老,它更有可能已经被发现或者它已经不再具有相关性了。 Facebook通过考虑帖子的年龄来解决这两个问题。
我猜这个公式非常抽象,这是我对它的解释:
function calculateFeedScore (){
foreach ($edges as $edge){
$friendshipWeight = 30 // pre calculated from the DB
if ($edgeType = comment) $edgeWeight = 1;
if ($edgeType = like) $edgeWeight = 2;
if ($edgeType = tag) $edgeWeight = 3;
.....
$edgeAgeInDay = ...; // decay each day
$decay = 0.5 // Radioactive decay ??
$edgeDecayFactor = 1 * pow($decay ,$edgeAgeInHour+1 ) // decay after one day
$edgeScore = friendshipWeight * $edgeWeight *$edgeDecayFactor
$feedItemScore += $edgeScore;
}
return $feedItemScore
}
所以我只是乘以你,w和d。那是对的吗?我怎样才能改进它?是的,我知道我需要在生产中对其进行微调,但是......谢谢