“基于 Apache Mahout 构建社会化推荐引擎”一文例子运行纪实

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

这篇文章原作者不知何故,在几个关键点上一笔带过,想要让例子运行起来,得费自己好大功夫才能搞定,去年我搞好了一次,没记博客,结果服务器不知怎么原来东西没了,这次我是花了2天时间搞定的,记下来一是为自己备忘,也希望能帮助那些还在苦闷的同行者。

1:Taste 的安装与简单的 Demo 实现

这一部分还是写的比较好的,基本按照文档操作就能看到结果

2:使用 Taste 构建推荐引擎实例 – 电影推荐引擎

这一部分就比较头痛了,我也无法一一详细描述,中间有很多困难之处。

首先从原文下载作者提供的代码,导入到eclipse,我的eclipse是Eclipse Java EE IDE for Web Developers,版本是Indigo Service Release 2,导入之后是一堆错,这个估计每个人都不一样,自己通过google应该都能解决。我的错误都是lib下的jar包引起的,参考下面:

原文的代码使用的是mahout0.2的,这个显然太老了,我用mahout 0.5的版本替换了,从后面结果看基本无影响,但由于0.5版本有几个地方被修改了,需要修改到适应0.5版本的,到项目的属性里边修改即可。

原来的项目和tomcat相关的几个jar包,由于新版本tomcat没有common/lib目录了,需要将这几个jar包指到正确的位置,有个包还要改名字,修改后分别是:

TOMCAT_HOME/lib/jasper.jar,TOMCAT_HOME/lib/jsp-api.jar,TOMCAT_HOME/lib/servlet-api.jar,自己修改到对应的目录即可。

web.xml也有编译错误,头上几行修改为:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

这些都解决后,可以编译了,出来一堆编译错误,修改如下:

MovieDataModel.java,添加一行public final static String TIMESTAMP_COLUMN = "timestamp";这里的timestamp对应的是数据库表里边的字段名,不能乱写,再出错的super函数最后加上一个参数TIMESTAMP_COLUMN,这个编译错误消失。

还有个和IDRescorer相关的编译错误,由于参数类型变了,修改为正确的类型即可,实际上这一项在项目中根本没用到,改对类型就可以了。

完成上面这些基本可以编译通过,接着出来一个新问题,项目不能导出为war

在属性里找到project facets这一项,可以在这里将项目转化为dynamic web module,java版本要选高于1.5版本的,否则会编译出错。

至此,项目可以放置到tomcat下webapps下了,但是由于转过来的版本打包后有些文件都没有打进去,我只好手工拷贝这些文件到解压目录,应该会有更好的方法,不过我java刚学不久,不知道怎么做,主要拷贝了web.xml,index.html

到这一步,在浏览器里访问website:8080/MovieSite应该能看到登录页面了,但登录肯定会告诉你something wrong,是最后出大招的时候了。

3:初始化数据库

无法登录是因为数据库中无初始数据,需要自己加,怎么加呢?原文肯定没有了,幸好有好人写了个程序,http://www.cnblogs.com/abelstronger/articles/2093847.html

从上面的链接下载到程序之后,需要自己编译3个程序添加数据到数据库,代码自己看,有java基础的应该很容易知道怎么做,如果DBUtils.java报getJDBCConnection找不到,加入下面代码:

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();
            }
        }
    }

数据库的添加和表的创建参考原文即可。

4:数据源配置:

修改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等修改为你自己对应的值,

5:mysql驱动我用的mysql-connector-java-5.0.6-bin.jar,重启tomcat,这个时候应该可以用了,如果有问题,查看tomcat的logs目录下对应的日志tail -f catalina.out

6:用户登录的邮件地址查找movie数据库下的users表,随便输入一个即可,一般是test****@gmail.com,其中****是1-6040的一个数字,密码不需要填

springboot 2.0+mybatis+hikari/druid+atlas+mysql 配置多数据源及遇到的坑 前言:由于项目中用到了多个数据源,所以需要配置多数据源。这时候就不能使用springboot的默认数据源加载了,需要自定义多个数据源。一、配置准备看了springboot的doc和一些博主的经验之谈,发现配置多数据源并不麻烦。选择了一种比较简单的方式,自定义DataSource,SqlSessionFactoryBean,SqlSessionTemplate和DataSourceTransacti... 阅读详情

相关推荐

基于Mahout构建推荐引擎

什么是Mahout? MahoutApache旗下的一个开源项目,基于由以前的研究人员研究的经典推荐算法,它抽象和实现理论研究成果,将理论知识中的复杂运算进行封装,并支持多种数据源格式(文件,数据库等)并提供了多种可扩展的选项,将其集成到框架中去,使得开发人员能够通过API直接使用该算法实现,通过工具集隐藏其复杂的底层实现,帮助我们创建智能应用程序更快,更简单。此外,通过使...

zhang_jiayuan的博客 779

MySQL Transaction Isolation Level

isolation level https://dev.mysql.com/doc/refman/8.0/en/glossary.html#glos_isolation_level One of the foundations of database processing. Isolation is the I in the acronym ACID; the isolation level ...

1073

实践《基于 Apache Mahout 构建社会化推荐引擎

具体步骤,参见博客:http://blog.csdn.net/fufengrui/article/details/17022535

MySQL事务隔离级别和Spring事务关系介绍

事务隔离级别介绍 隔离级别 脏读 不可重复读 幻读 未提交读(Read uncommitted) 可能 可能 可能 已提交读(Read committed) 不可能 可能 可能 可重复读(Repeatable read) 不可能 不可能 可能 可

蜗牛的专栏 1万+

mysql读事务的隔离级别

碰到的问题:做sns系统,对发布和评论的操作做异步处理,将发布和评论插入mysql后的id放入队列中,有一个常驻php进程负责从队列从队列中取得id做后续一些列的计数、通知等操作。正式环境上客户端浏览器发布和评论后,php脚本从数据库里读不到相应id对应的内容了,而测试环境却可以。 调试半天最后发现是mysql对tansaction_isolation(事务隔离级别)的配置不同。内网开发环境的隔

wzllai的专栏 8170

mysql数据库事务隔离级别是_MySQL数据库事务隔离级别(Transaction Isolation Level)

今天在学习JDBC的时候看到了关于MySql的事务的隔离级别的问题,感觉内容挺高级的,所以记录一篇文章,以备后面使用。数据库隔离级别有四种,应用《高性能mysql》一书中的说明:然后说说修改事务隔离级别的方法:1.全局修改,修改mysql.ini配置文件,在最后加上1 #可选参数有:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALI...

weixin_31616935的博客 427

“基于 Apache Mahout 构建社会化推荐引擎一文例子运行纪实(引用)

这篇文章原作者不知何故,在几个关键点上一笔带过,想要让例子运行起来,得费自己好大功夫才能搞定,去年我搞好了一次,没记博客,结果服务器不知怎么原来东西没了,这次我是花了2天时间搞定的,记下来一是为自己备忘,也希望能帮助那些还在苦闷的同行者。1:Taste 的安装与简单的 Demo 实现这一部分还是写的比较好的,基本按照文档操作就能看到结果2:使用 Taste 构建推荐引擎实例 – 电影推荐引擎这一部...

weixin_34319999的博客 106

实践《基于 Apache Mahout 构建社会化推荐引擎》--1

原文链接: 《基于 Apache Mahout 构建社会化推荐引擎》--http://www.ibm.com/developerworks/cn/java/j-lo-mahout/ 这段时间学习推荐系统,发现了这篇不错的文章,按照文章中的执行难,发现原文中有些步骤执行不了,写的不详细,遇到的问题记录了下来,先记录第一步,运行例子,具体执行步骤: 0.前提: 安装JDK、Ma

专注 3272

基于 Apache Mahout 构建社会化推荐引擎

http://www.ibm.com/developerworks/cn/java/j-lo-mahout/ Web 2.0 的一个核心思想就是“群体智慧”,即基于大众行为,为每个用户提供个性化的推荐。这使得如何让用户能更快速更准确的获得所需要的信息,成为了 Web 应用成败的关键。Apache Mahout 是 ASF(Apache Software Foundation)的一个较新的开源项目...

weixin_30307267的博客 232

基于 Apache Mahout 构建社会化推荐引擎【链接】

Web 2.0 的一个核心思想就是“群体智慧”,即基于大众行为,为每个用户提供个性化的推荐。这使得如何让用户能更快速更准确的获得所需要的信息,成为了 Web 应用成败的关键。Apache Mahout 是 ASF(Apache Software Foundation)的一个较新的开源项目,提供机器学习领域的一些经典算法的高效实现。本文主要讲述如何基于 Apache Mahout构建社...

188

基于Mahout实现协同过滤推荐算法的电影推荐系统

1 Mahout介绍 Apache MahoutApache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。经典算法包括聚类、分类、协同过滤、进化编程等等,并且,在 Mahout 中还加入了对Apache Hadoop的支持,使这些算法可以更高效的运行在云计算环境中。 ...

bystc的博客 3万+

基于Apache Mahout构建社会化推荐引擎

一.推荐引擎简介 推荐引擎利用特殊的信息过滤(IF,Information Filtering)技术,将不同的内容(例如电影、音乐、书籍、新闻、图片、网页等)推荐给可能感兴趣的用户。通常情况下,推荐引擎的实现是通过将用户的个人喜好与特定的参考特征进行比较,并试图预测用户对一些未评分项目的喜好程度。参考特征的选取可能是从项目本身的信息中提取的,或是基于用户所在的社会或社团环境。 根据如何抽取参考

大道至简 623

使用Apache Mahout制作 推荐引擎

推荐引擎可能是当今初创公司应用最多的一种数据科学方法。有两项主要技术用来创建一个 推系统:基于内容的过滤与协同过滤。基于内容的过滤算法使用项目属性寻找带有相似属性的 项目协同过滤算法关注的是用户的评分或者其他用户的行为,它基于拥有类似行为的用户喜好 与购买物品进行推荐。 本章先讲解基本概念,它们是理解推荐引擎原理必需的内容;然后演示如何使用Apache Mahout中的各种算法实现快速创建一个可扩展的推荐引擎

weixin_55987175的博客 1490

推荐系统 Mahout入门之简单使用

MahoutApache MahoutApache Software Foundation(ASF)旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout项目目前已经有了多个公共发行版本。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。通过使用 Apache Hadoop Mahout 可以有效地扩展到Hadoop集群。 推荐系统的数学原理: 以最简单的基于协同过滤而言,其数学原理在最简化抽象形式而言就是比

kicinio的博客 8129

实践《基于 Apache Mahout 构建社会化推荐引擎》--2

《基于 Apache Mahout 构建社会化推荐引擎一文中,实现了“使用 Taste 构建推荐引擎实例 – 电影推荐引擎”,例子中错误较多,且没有提供源码,看着费劲,只能自己研究。 环境:MyEclipse8.5+JDK1.6+Tomcat6,下载后,MyEclipse导入运行即可。 "Taste 的安装与简单的 Demo 实现"工程源码,下载地址一:http://download

专注 3117

电影推荐-基于 Apache Mahout 构建社会化推荐引擎

最近开始研究推荐系统,

lazythinker的专栏 1505

机器学习开源项目mahout+用其开发推荐引擎

机器学习开源项目mahout+用其开发推荐引擎 Apache MahoutApache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。经典算法包括聚类、分类、协同过 滤、进化编程等等,并且,在 Mahout 的最近版本中还加入了对 Apac

TreeFish2012的专栏 1436
上一篇: Maven实战读书笔记(一)
下一篇: 一个介绍spring3 mvc的网站
softwarehe
博客等级 码龄25年 66粉丝 165原创
评论 24
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值