我想在我的 Ruby on Rails 项目中使用 Apache Mahout 来实现推荐和协同过滤。特别是我的要求是:
- 建议相关标签。
- 推荐相关文章。
- 根据用户的喜好提示他对文章进行评论。
- 根据地理位置和用户的其他元信息,向他推荐相似的用户。
如果它可以轻松地与 rails 集成并满足我的要求,我愿意使用任何其他解决方案(mahout 除外)。
我想在我的 Ruby on Rails 项目中使用 Apache Mahout 来实现推荐和协同过滤。特别是我的要求是:
如果它可以轻松地与 rails 集成并满足我的要求,我愿意使用任何其他解决方案(mahout 除外)。
Mahout(和 Hadoop)在运行在 JRuby 上的 Rails 中运行良好。您可以像这样包含 Hadoop 和 Mahout jar:
需要'rubygems'
需要'java'目录["/mahout-base-dir/**/*.jar"].each { |jar| 需要 jar }
目录["/hadoop-base-dir/**/*.jar"].each { |jar| 需要罐子}
然后您可以包含您计划使用的 Mahout 类,例如:
include_class 'org.apache.hadoop.fs.Path'
include_class 'org.apache.hadoop.conf.Configuration'
include_class 'org.apache.hadoop.fs.FileSystem'
include_class 'org.apache.mahout.clustering.spectral.common。 AffinityMatrixInputJob'
include_class 'org.apache.mahout.clustering.spectral.kmeans.SpectralKMeansDriver'
从那里,您可以遵循 Mahout Java Docs 和 JRuby 约定来构建您的 Rails rec 系统。
话虽如此,我不确定这是否是您网站的最佳架构(很难说没有更多细节)。如果您的问题规模大到足以支持 Mahout,那么将 Rails 仅用于 Web 内容可能更有意义,并在 Web 框架之外生成您的建议(例如,通过在夜间批处理中生成相似性等)。
值得一提的是,Mahout 'taste-web' 模块包含的脚本将围绕基于 Java 的 Recommender 构建即用型 Web 服务,作为 .war 文件,您可以将其部署在 Tomcat 之类的东西上,然后进行对话通过 HTTP。这可以从任何可以发出 HTTP 请求的平台访问。
http://lucene.apache.org/mahout/taste.html#Standalone+server