我想在我的Ruby on Rails项目中使用Apache Mahout来实现建议和协作过滤。特别是我的要求是:
如果它可以轻松地与rails集成并满足我的要求,我愿意使用任何其他解决方案(除了mahout)。
答案 0 :(得分:7)
Mahout(和Hadoop)在JRuby上运行的Rails中运行良好。你可以像这样包括Hadoop和Mahout罐子:
要求'rubygems' 要求'java'
Dir [“/ mahout-base-dir / ** / * .jar”]。每个{| jar |要求罐子。
Dir [“/ hadoop-base-dir / ** / * .jar”]。每个{| jar |要求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框架之外生成您的建议(例如通过在每晚批量生成亲和力等)可能更有意义。
答案 1 :(得分:6)
对于它的价值,Mahout'taste-web'模块包含脚本,这些脚本将围绕基于Java的Recommender构建即用型Web服务,作为.war文件,您可以在Tomcat之类的部署,然后通过HTTP交谈。这可以从任何可以发出HTTP请求的平台访问。
http://lucene.apache.org/mahout/taste.html#Standalone+server