基于Hadoop的宁波旅游景点及周边商城推荐系统
基于大数据技术的旅游景点推荐数据分析可视化系统

前言介绍

本文基于Hadoop的宁波旅游推荐周边商城实现与设计采用Spring Boot、Vue.js、MySQL、Vue,Hadoop等技术,构建了一个功能全面的Web应用。该系统实现了用户注册与登录、用户个人信息管理、商品信息,宁波景点记录等功能模块,为用户提供个性化的景点和商品推荐服务。管理员可以通过系统进行用户信息管理和景点信息商品信息等管理,并且可以通过数据分析大屏查看系统景点商品的数据统计分析。此外,Python爬虫技术用于采集最新的景点数据,确保推荐内容的时效性和准确性。

系统通过整合前后端技术,提供了高效的数据处理和用户体验。Hadoop集群负责存储和处理大规模景点数据。系统的模块化设计使得各功能相互独立又紧密协作,提升了系统的可扩展性和维护性。用户能够方便地浏览和选择适合自己景点和商品,管理员则可以灵活地管理用户信息和景点商品信息,确保系统的正常运行。

01开发环境

1.1Java 技术

1.2Spring Boot 框架

1.3Hadoop,hdfs

1.4Scrapy爬虫

1.5MySQL数据库

1.6B/S 结构

1.7Vue.js 技术

1.8基于用户收藏的协同算法

02系统功能亮点

亮点(爬虫【携程旅行网站】、基于用户收藏的协同算法、数据预测、Echarts可视化)

1、数据管理:爬虫信息列表展示。

2、数据存储:mysql数据库。

3、可视化分析:各种数据分析统计后图表大屏展示

4、数据分析:根据hadoop大数据技术进行数据分析

03图片展示

在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

04 代码展示

/**
     * 协同算法(基于用户收藏的协同算法)(交流学习+vx:S20231025S )
     */
    @RequestMapping("/autoSort2")
    public R autoSort2(@RequestParam Map<String, Object> params,NingbosightEntity ningbosight, HttpServletRequest request){
        String userId = request.getSession().getAttribute("userId").toString();
        Integer limit = params.get("limit")==null?10:Integer.parseInt(params.get("limit").toString());
        List<StoreupEntity> storeups = storeupService.selectList(new EntityWrapper<StoreupEntity>().eq("type", 1).eq("tablename", "ningbosight"));
        // 创建协同过滤对象
        UserBasedCollaborativeFiltering filter = new UserBasedCollaborativeFiltering();

        // 为指定用户推荐物品
        String targetUser = userId;
        int numRecommendations = limit;
        List<String> recommendations = filter.recommendItems(storeups, "userid", "refid", userId, numRecommendations);
        
        // 输出推荐结果
        System.out.println("Recommendations for " + targetUser + ":");
        for (String item : recommendations) {
            System.out.println(item);
        }
        EntityWrapper<NingbosightEntity> ew = new EntityWrapper<NingbosightEntity>();
        ew.in("id", String.join(",", recommendations));
        if(recommendations!=null && recommendations.size()>0 && recommendations.size()>0) {
            ew.last("order by FIELD(id, "+"'"+String.join("','", recommendations)+"'"+")");
        }

        // 根据协同结果查询结果并返回
        PageUtils page = ningbosightService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, ningbosight), params), params));;
        List<NingbosightEntity> pageList = (List<NingbosightEntity>)page.getList();
        if(recommendations!=null && recommendations.size()>0 && pageList.size()<limit) {
            int toAddNum = limit-pageList.size();
            ew = new EntityWrapper<NingbosightEntity>();
            ew.notIn("id", recommendations);
            ew.orderBy("id", false);
            ew.last("limit "+toAddNum);
            pageList.addAll(ningbosightService.selectList(ew));
        } else if(pageList.size()>limit) {
            pageList = pageList.subList(0, limit);
        }
        page.setList(pageList);
        return R.ok().put("data", page);

    }

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐