参考文章 IBM<<基于 Apache Mahout 构建社会化推荐引擎>>, 文章的连接: http://www.ibm.com/developerworks/cn/java/j-lo-mahout/html
安装条件:java
1) JDK,使用1.6版本。 MyEclipse /Eclipsemysql
2) Maven,使用2.0.11版本或以上。web
3) Apache Mahout,使用0.5版本。sql
4) Tomcat 7.0 或者其余版本。数据库
如下会具体说明。apache
1、 Taste的安装与简单的 Demo 实现小程序
下载获得Apache Mhout的发布版本。 http://mahout.apache.org/api
建议下载0.5版本 mahout-distribution-0.5-src.zip,解压缩。浏览器
下载Maven,而且配置环境,见 http://blog.csdn.net/highram/article/details/7190839
在MyEclipse或者Eclipse中构建Mahout,见http://www.cnblogs.com/dlts26/archive/2011/09/13/2174889.html
启动jetty服务器: cmd 在 taste-web目录下敲命令:mvn jetty:run-war 输入url: http://localhost:8080/mahout-taste-webapp/RecommenderServlet?userID=1, 测试一下。 你将看到以下界面:
则表示你已经成功实现了Taste Demo.
其中, 也许你会遇到以下的问题:
1) 启动jetty服务器时, 敲入 mvn jetty:run-war 没法正常执行。
只需将命令改为 mvn org.mortbay.jetty:maven-jetty-plugin:run ;
2)WARN::FAILED taste-recommender: java.lang.OutOfMemoryError: Java heap space
此时敲入命令 set MAVEN_OPTS=-Xmx1024M 便可;
(由于这部分还算简单,并且能够参考的前人的工做不少,因此说的比较简单)
2、 使用 Taste 构建推荐引擎实例 – 电影推荐引擎
下面将介绍如何使用以上的 Taste 方便地构建自定义的推荐引擎.
注意,在IBM那篇文章《基于 Apache Mahout 构建社会化推荐引擎》的结尾,有打包好的源 码,只须要下载就OK。
1 . 将源码src压缩包解压缩之后,将其中的MovieSite工程载入MyEclipse,或者Eclipse中,我用的是MyEclipse.
2 . 添加jar包.
如上图所示,最后四个jar包是源工程中没有的。这四个jar包分别是:
Servlet-api.jar, jasper.jar, jsp-api.jar 以及mysql-connector-java-5.1.25-bin.jar。
前三个在Tomcat目录下的lib 文件夹下面能够找到,若是是低版本的Tomcat,则能够在common/lib目录下找到前三个jar包。
最后一个jar包是mysql实现的用于java的jdbc操做的jar包,这个jar能够在MySQL官网上下载。
http://dev.mysql.com/downloads/connector/j/。
注意,
首先必须将最后一个mysql-connector-java-5.1.25-bin.jar包放入Tomcat的lib目录下;
一块儿导入MyEclipse之中。即右击Build Path->Configure Build Path->Add External JARs,添加4个jar。
同时删除由于路径无效的jar包。
3 . 基本上MyEclipse不会报错,若是报错,按照提示修正。
(若是有错,能够参考CSDN上的一篇blog: http://blog.csdn.net/softwarehe/article/details/7465151,可是上面说的不少问题,我没有遇到,也就没有修改。)
4 . 若是MovieSite再也不有错,则能够将项目能够放置到tomcat下webapps下。
注意1):首先咱们须要将src/MovieSite/movie下的所有文件,直接拷进MovieSite下; 而后将movie文件夹删去。
注意2). Tomcat 下的web.xml 可能有错,须要改正,多出一个<web-app>,将其删除。
启动Tomcat 服务器,(若是jetty服务器开着的话,请关闭)在浏览器中输入http://localhost:8080/MovieSite, 你能够看到登陆页面,此时登陆确定会告诉你something wrong,想要Login成功,还要继续往下走。
5 . 由于如今数据库中没有任何数据,既没有user登陆帐号,也没有将数据集载入数据库。所以没法登录。
须要向数据库中添加初始数据。有现成的程序能够将数据集导入数据库 参考http://www.cnblogs.com/abelstronger/articles/2093847.html
注意: 1) 将连接中下载获得的三个小程序代码,添加入MovieSite工程中:
2) 编译有错, 第1、是更改包名:package com.prepare;
第2、缺乏DBUtil.getJDBCConnection()函数。
向DBUtil中添加以下代码:
public static Connection getJDBCConnection() { String driverClassName = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost/movie"; String username = "username"; //修改成你本身用户名 String password = "password"; //修改成你本身密码 Connection conn = null; try { Class.forName(driverClassName); conn = DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } public static void closeConnection(Connection conn) { if(conn!=null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } 第3、更改数据集的路径,
LineNumberReader lineReader = new LineNumberReader(new FileReader(“”)); “”中填
写相应数据集在你计算机上的绝对路径。
3) 因为用到MySQL数据库,因此下载,安装,启动,并新建一个数据库movie, 而且利用源码中com.ibm.taste.example.movie.init包中tables.sql, sql语句为movie数据库创新4张表。
4) 依次运行ImportMovies.java、ImportRatings.java以及ImportUsers.java。
注意: 执行顺序很重要,按照上面执行; 在运行ImportRatings.java,会报错,即填充movie_preference这张表的时候会出错,由于用到了users表的外键,而users表空的,这时候只须要将与users表的外键去掉,便可排错。
5) 数据库填充完毕。
6 . 修改Tomcat中的server.xml文件。 找到<Host> ... </Host>,在</Host>以前加入以下代码:
<Context path="/MovieSite" docBase="/usr/local/tomcat/webapps/MovieSite" debug="0" reloadable="true"> <Resource name="jdbc/movie" auth="Container" type="javax.sql.DataSource" username="username" password="password" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/movie" maxActive="15" maxIdle="7" defaultTransactionIsolation="READ_COMMITTED" validationQuery="Select 1" /> </Context> 其中的docBase和username,password等修改成你本身对应的值;
7 . 最后一步了,从新启动Tomcat , 用户登陆的邮件地址查找movie数据库下的users表,随便输入一个便可,通常是test****@gmail.com,其中****是1-6040的一个数字,密码随便填写. 顺利的话,你将看到以下界面, 大功告成.
我对Java Web 这块不是特别熟悉,所以我也算是摸着石头过河,幸亏有这么多前人作的工做,基本上按着连接上的文章一步步作,也能完成,感谢他们。 可能书写过程,有遗漏的部分,望你们给个提醒,及时会补上。 可能每一个人在这过程当中,遇到的问题都不太同样,若是你们遇到什么问题,Google不出来的,你们能够一块儿讨论。