PHP防重推荐实现
PHP防重推荐实现
使用唯一标识符
为每个推荐内容生成唯一标识符(如UUID或哈希值),存储在数据库或缓存中。每次推荐前检查标识符是否存在,避免重复。
$uniqueId = md5($content); // 使用MD5生成唯一哈希
if (!in_array($uniqueId, $existingIds)) {
// 推荐逻辑
}
基于用户行为过滤
记录用户的浏览或交互历史,推荐时排除已访问过的内容。可通过数据库或Redis存储用户行为数据。

$userViewedItems = $redis->lRange("user:{$userId}:viewed", 0, -1);
$recommendations = array_diff($rawRecommendations, $userViewedItems);
时间窗口限制
设置时间阈值(如24小时),同一内容在时间窗口内不重复推荐。结合时间戳和内容ID实现。

$lastRecommendedTime = $cache->get("item:{$itemId}:last_recommended");
if (time() - $lastRecommendedTime > 86400) {
// 允许推荐
}
协同过滤算法
利用用户-物品矩阵计算相似度,优先推荐未交互过的相似内容。需结合机器学习库或自定义算法。
// 示例:基于用户的协同过滤
$userSimilarityScores = calculateUserSimilarity($currentUser, $allUsers);
$recommendations = getTopNItems($userSimilarityScores, $excludeItems);
混合策略组合
结合内容相似度、用户偏好和实时行为动态调整权重。例如:70%基于内容相似度,30%基于热门度。
$finalScore = 0.7 * $contentSimilarity + 0.3 * $popularityScore;
if ($finalScore > $threshold && !$isDuplicate) {
// 加入推荐列表
}






