2012-01-18 104 views
1

我正在为用户创建的组件集合实现一个简单的推荐系统。Apache Mahout,使用还是不使用

我打算用JPA和一些专用的EJB来做到这一点。我的实体会有多个包含最新建议的列表,然后EJB会抓取数据集并定期更新此列表。该模型基于组件之间的关系,并且不依赖于过去的用户行为。我预计数据集将保持相对较小。大概不超过五十万件。

我对JPA和EJB如何做到这一点有个很好的想法,我认为对于我的特殊用例,这将非常有效。

我应该花时间学习和实施Mahout吗?我对hadoop有一定的经验,尽管我认为我的数据集不会大到足以证明引进大象的合理性。

另外,任何人都可以指出我用mahout实现推荐系统的一个很好的入门书吗?

非常感谢。

回答

3

如果您正在实施推荐引擎,请注意,该Mahout基于Hadoop具有完全独立的实现,而不是基于Hadoop。这很好,因为Hadoop不是那种直接连接到任何基于EJB的东西。而且你没有巨大的规模问题。所以,你不需要担心Hadoop。

除了.hadoop包以外,您还想看看org.apache.mahout.cf.taste.impl中的内容;它都只是纯Java,所以你可以将它嵌入到EJB中。我想你想看看Recommender API,然后只是将它包装在会话bean中,然后将其公开。

(你真的想使用EJB的可好?另外一个问题...)

事实上,在以前的版本,0.4%,仍然有一个EJB绑定例如,作为一个无状态会话bean。你可以挖掘并重用这个包装器。

对于这部分代码的最好的网络资源是: https://cwiki.apache.org/MAHOUT/recommender-documentation.html

我们的书,Mahout in Action,显然是不免费的,但肯定是该项目的最好的和唯一的参考。我在这里编写了有关代码的问题,以及关于此代码的书籍部分,因此源代码非常直接。

+0

好极了,Mahout in Action已经在我的亚马逊购物车中了。你会推荐哪些其他技术来代替多层应用程序的EJB? – b3bop 2012-01-18 18:05:49

+0

如果你将它公开为一项服务,说实话,一个简单的servlet是有效的。基于HTTP的文本或XML。这就是我一直所做的。推荐者API非常简单,以至于更多的感觉像是过度杀伤。在'integration /' – 2012-01-18 18:22:10

+0

中有一个这样的servlet的例子,我会检查它。顺便说一句,我认为它真棒,我可以在stackoverflow上提出这个问题,并有副总裁和技术repsond的主要作者......软件工程师在互联网之前做了什么?再次感谢。 – b3bop 2012-01-18 18:27:19