原创文章,转载请注明出处https://blog.csdn.net/FRYAN28/article/details/90474141
基于用户的协同过滤算法是指通过分析用户对商品的行为,计算出兴趣相似的用户,并向被推荐用户推荐其兴趣相同的用户感兴趣的商品。
土话说大概就是,我跟你看的东西,基本上一样,那就可以判定我们有相似的喜好,那么我浏览的其他的东西,就可以推荐给你
我记录用户的浏览行为,并将用户对于每个商品的浏览行为的评分赋值为1.0。浏览1次为1分,多次浏览分值能够累加,通过皮尔逊公式计算用户喜爱相似度
这里贴上核心方法源码
/**
* @Author Swallow
* @Date 2019/4/21
**/
public List<GoodsInfo> CFUserUtil(String Id){
//存放所有用户数据
Map<String, Map<String, Double>> allUsers = new HashMap<String, Map<String, Double>>();
//查询所有的数据
List<User> users = userDao.queryAllUser();
List<GoodsInfo> goodsInfos = myGoodsDao.queryAll();
//遍历每个用户,定义值
for (User user : users) {
/**
* 通过sql语句查询获取用户浏览记录,以及对应的浏览次数
*/
List<GoodsValue> goodsValues = browseDao.queryGoodsValue(user.getPhoneId());
logger.info("goodsValues"+goodsValues.toString());
if (goodsValues.size()>0){//有浏览记录的用户进行相似度计算
Map<String, Double> u = new HashMap<String, Double>();//存放商品ID 评分值
for (GoodsInfo goodsInfo:goodsInfos) {
String GId = String.valueOf(goodsInfo.getId());//商品列表中的商品ID
for (GoodsValue value:goodsValues){
String browseGId = String.valueOf(value.getGoodsId());//浏览记录中的商品ID
if (browseGId.equals(GId)){