总结
来源:互联网 发布:免费注册淘宝账号官网 编辑:程序博客网 时间: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//排序
- 总结
- 总结
- 总结
- 总结
- 总结!
- 总结
- 总结.
- 总结。
- 总结
- 总结
- 总结
- 总结
- 总结
- 总结
- 总结
- 总结
- 总结
- 总结
- React ES5与ES6语法写法比较
- [日推荐] 『无忧育儿说』养育孩子就是这么简单!
- lua lib 的编译
- 对double类型中存在-0.0的数据检验
- 安卓软键盘的处理
- 总结
- C++ template高阶技巧(4)---《C++ Templates》
- 【swift】关于po命令不显示问题 error: <EXPR>:3:1: error: use of unresolved identifier
- ES6 Arrow functions
- css元素隐藏各种方式原理及display:none和visibility:hidden
- 阿里前端笔试题
- How To Set HANA ODBC Connection Properties
- C#自定义RSA加密解密及RSA签名和验证封装类
- Merge into的注意点之ORA-30926: 无法在源表中获得一组稳定的行?