Hadoop好友推荐系统-推荐结果查询

来源:互联网 发布:php开源项目 编辑:程序博客网 时间:2024/05/17 13:14

项目总目录:基于Hadoop的好友推荐系统项目综述

一、前端展示

1、jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>  <body>  <div  data-options="region:'north',border:false" style="height:60px;padding:50px 50px 10px 50px;">  <h1> 朋友推荐</h1>   <label>用户ID:</label>  <input class="easyui-validatebox" type="text"    id="recommend_input_id" data-options="required:true" style="width:300px"                    value="9905" />  <a id="recommend_button_id" href="" class="easyui-linkbutton" data-options="iconCls:'icon-note'">查看</a>  <br><hr><br>    </div>    <div id="recommend_return_id" style="padding-left: 30px;font-size: 20px;padding-top:10px;"></div>    <br>    <div id="recommend_layer_id" style="width:1100px;height:300px;display:none">        <table id="recommend_id" class ="easyui-datagrid"  >        </table>    </div>    <!-- -->     <script type="text/javascript" src="js/recommend.js"></script>  </body>

2、js逻辑

// reocmmend 用户查询及推荐    var id_=$('#recommend_input_id').val();    $('#recommend_id').datagrid({        border : false,        fitColumns : false,        singleSelect : true,        width : 600,        height : 250,        nowrap : false,        fit : true,        pagination : true,// 分页控件        pageSize : 4, // 每页记录数,需要和pageList保持倍数关系        pageList : [ 4, 8, 12 ],        rownumbers : true,// 行号        pagePosition : 'top',        url : 'dB/dB_getRecommendData.action',//      url:'',        queryParams: {            id: id_ // ,        // subject: 'datagrid'        },        idField:'id',        columns :[[                {                    field : 'displayName',                    title : '用户名',                    width : '120'                },{                    field : 'downVotes',                    title : '反对数',                    width : '150'                },{                    field : 'upVotes',                    title : '支持数',                    width : '150'                },{                    field : 'views',                    title : '浏览数',                    width : '150',                },{                    field : 'reputation',                    title : '声望值',                    width : '150'                },{                    field : 'aboutMe',                    title : '关于我',                    width : '300'                }                 ]]            });     // recomend});

二、后台逻辑

1、action层

对应的action在这里获取:url : ‘dB/dB_getRecommendData.action’,

/**     * 获取推荐信息     */    public void getRecommendData(){        Map<String,Object> map = null;        try{            map=dBService.getRecommendData(id,rows,page);        }catch(Exception e){            e.printStackTrace();        }        String json =JSON.toJSONString(map);        log.info(json);        Utils.write2PrintWriter(json);        return ;    }

2、service层

/**     * 获取推荐信息     * 1. 根据id查询UserGroup看是否有记录;      * 2. 如有记录,则用户有推荐的朋友;跳转到4;     * 3. 如果没有,则返回说当前用户没有分组;      * 4. 根据查询的groupType再次查询所有该组的id;      * 5. 根据4中的id去UserData中查找数据并显示;     *      * @param id     * @param page     * @param rows     * @return     * @throws Exception     */    public Map<String, Object> getRecommendData(String id, int rows, int page) throws Exception {        Map<String, Object> map = new HashMap<String, Object>();        String hql = "from UserGroup ug where ug.userId=?";        Object ug = null;        try {            ug = baseDao.get(hql, new Object[] { Integer.parseInt(id) });            if (ug == null) {//                map.put("flag", "false");                map.put("html", "当前用户没有分组,不能推荐朋友!");                map.put("msg", "当天用户没有分组!");                return map;            }            UserGroup userG = (UserGroup) ug;            int groupType = userG.getGroupType();            hql = "select count(1) from UserGroup ug where ug.groupType=?";            long total = (long) baseDao.count(hql, new Object[] { groupType });            hql = "from UserGroup ug where ug.groupType=?";            List<Object> userGroups = baseDao.find(hql, new Object[] { groupType }, page, rows);            List<UserData> userDatas = new ArrayList<UserData>();            UserData ud = null;            hql = "from UserData ud where ud.id=?";            for (Object u : userGroups) {                userG = (UserGroup) u;                ud = (UserData) baseDao.get(hql, new Object[] { userG.getUserId() });                userDatas.add(ud);            }            map.put("flag", "true");            map.put("html", "当前用户的分组是:" + groupType + ",下面是该用户的推荐朋友:");            map.put("total", total);            map.put("rows", userDatas);        } catch (Exception e) {            e.printStackTrace();            map.put("flag", "false");            map.put("html", "后台运行出错!");            map.put("msg", "后台运行出错!");            throw e;        }        return map;    }

三、程序运行截图

这里写图片描述

原创粉丝点击