总结

来源:互联网 发布:免费注册淘宝账号官网 编辑:程序博客网 时间:2024/06/16 14:44

总结

Lucene
Lucene是一套用于全文检索和搜寻的开源程式库,只需要给一个搜索名称的序列,或者与他相关的信息,luncene会在其后为其在本地磁盘建立一个序列,类似与数据库。
调用的时候只需要给他的seacher方法传一个String类型的数据,luncene根据所要搜寻的关键字类型进行分词搜索。返回的是一个关于String的相似信息一个数组。关于分词,对于IKAnalyzer不能分出具有形容词词性的数据,比如大字。除非原数据名包含奇数个数,并且da字单独。因为IK为二元分词。
mahout taste
Taste是mahout提供的一个协同过滤算法的搞笑实现。具体训练模型方法有五种,最常用的三种,分别是内存版:GenericDataModel、文件版:FileDataModel、数据库板:MySQLJDBCDataModel、具体实现步骤已经上传csdn;
http://blog.csdn.net/Inverse_fang/article/details/77089821
数据库板是提供了mysql的的支持;
文件版是通过训练一个文件成模型的方法,该文件必须具有 用户id;商品id;兴趣打分;必须满足1 ,2, 3并切,下一行要换行;中间用“,”或者空格或者tab隔开;
内存版是通过自带的一个接口实现,返回的结构类似于map结构,通过放入内存训练模型。
这三种方式都不适用于大型数据量的项目。本身taste使用于小型项目
也可以采用矩阵分解推荐算法。
具体协同过滤文件读写
从数据库查出来后循环遍历每一项,进行拼接组装。用到的是

StringbufferList<Taste> ta = mms.findTaste();                List<String> list=new ArrayList<String>();                for (Taste taste : ta) {                                    StringBuffer buf=new StringBuffer();                    buf.append(taste.getUserId());                    buf.append(",");                    buf.append(taste.getMoveId());                    buf.append(",");                    buf.append(taste.getValue());                    String string = buf.toString();                    list.add(string);                }                new TasteIo(list);

然后再用文件流写入。要注意的是不能写入对象。因为格式要与规定的一样
喜欢电影
类似于如今的投票环节,人人都可以投票,我所用的是根据点击喜欢时通过获取本终端的IP,将其作为操作时的用户名,并对其操作添加数据库。这样做可防止恶意刷票。本着一台终端只有一次的机会。还可以用mac地址。不过当一台终端宽带上网和无线上网时就有了两次机会

InetAddress addres = InetAddress.getLocalHost();//获取的是本地的IP地址 //PC-20140317PXKX/192.168.0.121                    address=   addres.toString();

当有用户访问时就变成了对用户进行操作;
评分展示
因为网页的数学计算不同于代码。所以将后台数据传递到前台会发生变化。对于运算可以采用fmt标签
引用和c标签一样

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %><fmt:formatNumber type="number" value="${(film.S-5)/10}" maxFractionDigits="0"/>                        </b>.<fmt:formatNumber type="number" value="${film.S%10}" maxFractionDigits="0"/>

虽然会有一小部分四舍五入的误差。利用他四舍五入将其元数据-5.这样计算出的数据就会和后台一样。
Css样式——三角形评分
具体在页面画出三角形的方法在我的csdn。

#triangle-topright { width: 0; height: 0; border-top: 100px solid red; border-left: 100px solid transparent; }

前提这与原本是一个div。
评分用span标签包裹旋转45.外边套一个div,定位在三角形div上方就行了
c标签的活用
当要判断的条数太多而不符合要求是放弃而选用;
只能对一条数据进行修饰,所以可以进行多个修饰

     <c:choose>    <c:when test="${top10.RN==1 }">       <tr><td style="font-size:18px;color:red;font-weight:bold;height:30px">NO.${top10.RN }:</td><td ><a href="/movies/findMovieByID?id=${top10.ID }" style="font-size:18px;" >${top10.MOVIE_NAME }</a>              </td></c:when>

时间轴
要根据数据库信息的商品日期与数据库时间比对,进行排列,然后放在时间轴上就可以完成展示。
SELECT MOVIE.”ID”,MOVIE.MOVIE_NAME,MOVIE.RELEASE,MOVIE.PICTURE
FROM MOVIE
WHERE MOVIE.RELEASE > (select current_date from dual)
//数据库当前时间
ORDER BY MOVIE.RELEASE//排序

原创粉丝点击