我正在开发一个项目(社交网络),该项目使用 Neo4j (v1.9) 作为底层数据存储和 Spring Data Neo4j。 我正在尝试向项目添加标签系统,并且正在寻找使用协作过滤策略有效实现标签推荐的方法。 经过大量研究后,我提出了以下选项:
- 赛弗。它是 Neo4j 使用的嵌入式查询语言。不需要其他框架,也许计算时间比其他框架更好。也许我可以使用 Spring Data Neo4j 轻松实现查询。
- Apache ·马胡特。它提供的机器学习算法主要集中在协同过滤、聚类和分类领域。但是,它不是为图形数据库设计的,并且可能会很慢。
- Apache 吉拉夫。 Google Pregel 的开源版本。
- Apache Spark 。它是一个快速、通用的大规模数据处理引擎。
- reco4j。这是迄今为止最合适的解决方案,但该项目似乎已经死了。
- Apache Spark GraphX + Mazerrunner。建议者the answer @johnymontana。我正在记录它。主要问题是不知道是否支持协同过滤。
- Graphaware Reco。由 @ChristopheWillemsen 在评论中建议。来自官方网站
is an extensible high-performance recommendation engine skeleton for Neo4j, allowing for computing and serving real-time as well as pre-computed recommendations.
但是,我还不知道它是否适用于旧版本的 Neo4j(目前无法升级 Neo4j 版本)。
那么,您有什么建议以及为什么?请随意建议上面未列出的其他有趣的框架。
最佳答案
Cypher 在本地遍历方面非常快,但并未针对全局图操作进行优化。如果您想要计算所有用户对之间的相似性指标,那么使用图形处理框架(如 Apache Spark GraphX)会更好。有一个项目叫Mazerunner连接 Neo4j 和 Spark,您可能想看看。
关于neo4j - 我应该使用哪个来在 Neo4j 之上实现协同过滤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30579770/