我被要求在PHP中创建一个现有的基本新闻源代码更聪明一些.也许具有相关性和多样性.客户不确定自己,他只是想要像Facebook的新闻源一样聪明(有点).我发现了这个(可能已经过时但有一些线索)
哪里:
西格玛 - 每个边缘的总和.边缘是一个可以显示在您的新闻Feed中的故事,如状态更新,评论,赞,标记等.
你 - 亲和力分数.这个因素会影响您与发布帖子的距离.如果您经常与发帖人,多个共同朋友或相关人员进行互动,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.那是对的吗?我怎样才能改进它?是的,我知道我需要在生产中对其进行微调,但是......谢谢