andres-montanez / recommendations-bundle
该包已被废弃,不再维护。未建议替代包。
Symfony2 扩展,实现了使用 MongoDB 的推荐引擎
dev-master
2014-11-21 15:05 UTC
Requires
- php: >=5.3.3
- symfony/framework-bundle: >=2.4.0
This package is auto-updated.
Last update: 2021-02-19 00:35:21 UTC
README
#RecommendationsBundle
内置的推荐引擎,使用 Symfony 和 MongoDB
推荐基于物品,使用皮尔逊距离匹配相似物品。
必须定义一个定时任务,以便定期运行,以便更新物品亲和度。
服务 andres_montanez_recommendations.recommendation
允许您
registerItem
:注册一个物品,您可以指定一个类型(例如:电影)、标签(例如:剧情、动作)和一个命名空间。addAction
:允许注册用户交互。您可以指定用户、动词(例如:评分)、物品、值和命名空间。getRecommendations
:为给定的用户获取推荐。您可以通过指定类型、标签和命名空间来缩小结果。
交互示例:"用户「Jon」对「电影蝙蝠侠」进行了「5分」的评分"
命名空间是如果您想在多个网站上使用该引擎但只有一个实例,因此只对在该命名空间上注册的物品进行推荐。对于用户、物品和标签的值,建议使用整数值。
主要算法基于 O'Reilly 的集体智慧代码。
该扩展已在以下数据集上进行了测试:
- 10万条评分,943个用户,1682个物品:相似性生成约4分钟,获取用户推荐少于2秒。
- 100万条评分,6040个用户,3883个物品:相似性生成约90分钟,获取用户推荐少于2秒。
数据集可在以下位置获取:http://grouplens.org/datasets/movielens/
建议围绕此服务构建一个服务包装器,以便更好地满足您的需求,并且还可以添加尽可能多的缓存层。请注意,对于大型数据集,结果会缓慢变化,需要大量的用户交互才能改变两个物品之间的相似性,从而改变推荐。每周生成一次相似性是一个很好的起点。还建议缓存用户推荐24-48小时,因为这不会经常改变,除非用户对更多物品进行评分。