前言
为了帮助用户解决网络购物的烦恼,优化网络购物体验,设计了基于ElasticSearch为基础的全网商品对比平台。该平台分为管理员界面和用户界面两个部分:
-
用户系统主要功能模块包括商品搜索模块、商品对比模块、登陆注册模块、商品信息模块
-
管理员系统分为数据采集模块、商品类别管理模块、商品管理模块,商品类别明细管理模块
本文中使用ElasticSearch主要功能为倒排索引和全文检索功能。系统运用 SpringBoot 技术搭建后端服务,前端采用 Vue 技术。系统进行数据采集主要进行使用jsoup爬虫技术,通过解析HTML网页获取我们想要的信息,最后对数据进行清洗、整理存储在ElasticSearch和MySQL中来实现。
该系统操作简单,界面优美,可以帮助用户解决网络购物时对于多平台的选择困难以及商家的平台差价等问题,还可以进行对多个商品进行对比,来帮助用户进行选择,选出最令自己满意的商品。
使用的技术:SpringBoot、Vue、ElasticSearch、Jsoup、Quartz
用户系统
登录注册模块
登录功能
用户在登录时首先进行检验用户的用户名和密码在数据库中是否存在,并检验用户的信息是否正确。如果正确,就可以登录然后进入首页。
在进行用户身份验证,后端主要采用JWT技术生成token令牌,并将生成的token令牌转化为字符串的形式返回给前端,由前端存储在 sessionStorage中用于验证用户身份
注册功能
用户在注册页面输入合法信息,前端对数据进行校验,将满足条件的用户信息传给后端,后端会通过用户输入的账户名进行判断账户名是否重复,如果重复返回前端并提示账户名重复,如果不存在重复的账户,就会进行注册。
注册成功之后会跳转到登录界面,用户输入注册的用户名和密码就可以成功登录了
商品搜索模块
商品搜索功能是本系统的核心功能点之一。其中包括:今日推荐功能、商品分类功能、商品搜索功能
-
商品搜索具有分页查询的功能。为了迎合用户的使用习惯,这里的分页查询抛弃了原有的通过标签分页的方式。而是通过滑动滚动条,当滚动条将要到达底部进行请求分页查询的接口,获取下一页商品的数据。
-
商品分类功能是对商品的类型进行分类,用户可以在商品分类中选择商品的类型进行商品的搜索操作,这样更加快捷,提高用户搜索效率。
-
今日推荐功能是通过对商品的点赞数进行排序,获取点赞数最高的前十种商品进行展示。给用户进行商品推荐,提高用户对系统的满意度,同时增加系统的多元化,让系统更加的丰富。
-
商品搜索功能是基于ElasticSeach的商品搜索。ElasticSeach会自动通过分词器对商品标题进行分词并创建倒排索引,当用户进行数据查询时,ElasticSearch会根据关键字通过倒排索引在全文中找到符合条件的数据.符合条件的商品被返回给前端供用户查看。
商品对比模块
用户选中想要对比的商品,然后系统会获取到被用户选中的商品编号,根据商品编号去获取对应的商品,获取商品的信息以及对应的历史价格数据。
将对应商品的详情信息和历史价格展示在一个新的页面中(如下图),该页面查看对应商品的参数对比信息,以及历史价格的波动来判断购买哪个商品。也可以进入原平台的商品页面对商品的原始评论等其他信息进行详细查看
商品信息模块
查看商品信息明细
当用户点击商品之后会跳转到商品明细页面。该页面展示了商品的明细信息(包括标题、价格、图片、来源和商品链接)和商品的历史价格。
用户可以根据商品历史价格的曲线图来分析该商品的价格,判断当前时间该商品的价格是否处于高位,让用户对商品的价格有一个清晰明了的认识。同时用户如果遇到喜欢的商品可以进行点赞,系统会根据点赞数来对商品进行推荐,让更多的用户看到该商品。
商品评论功能
用户对喜欢的商品进行评论,后端会接收到用户数据,在数据库中将对该商品进行评论用户的用户名和评论内容保存起来,只有登录的用户才可以进行商品评论和点赞。
为营造良好的评论环境。本系统添加评论过滤功能,对于一些敏感的词汇系统进行自动屏蔽。通过将用户评论的内容进行截取,通过敏感词截取的算法来查询评论内容是否存在敏感词,如果该评论中存在敏感词就使用“*”进行替换。
管理员后台系统
商品类别管理
该功能是对商品的类别进行分类,该模块具有增加、删除、查找和修改等功能。对商品进行大致的分类,主要对应的是上面商品搜索模块中的商品分类功能。
商品类别明细管理
该模块是对同一类别的商品进行细分,比如生活电器这一类别中包含电视、空调、冰箱等不同的细分。该模块具有增加、删除、查找、修改等功能。是对商品的类别进行更加细致的分类,同样对应的是上面商品搜索模块中的商品分类功能。
数据采集模块
自定义采集
数据采集功能是系统的核心功能之一。管理员首先设置好平台采集条数、选择采集平台、输入采集内容等条件,然后点击执行采集按钮发出采集命令,在采集的过程中后端会返回采集的日志并返回给前端进行展示。
当管理员输入数据采集条件之后,发送请求到后端,后端针对采集平台的数量,会启动对应数量的后台线程,每个线程会通过Jsoup技术去解析对应平台的HTML,获取对应的DOM节点获取商品数据,当所有线程采集完成之后,把在各个平台采集的商品数据放到一个集合中,然后对采集过来的商品数据进行过滤和清洗后保存到ElasticSearch中,同时将商品数据保存在MySQL数据库中并存储商品的历史数据,然后在前端显示采集完成,如果这过程中进行采集出错,会在前端显示采集失败。
定时任务采集
由于采集的商品种类比较多,如果使用手动采集会耗费大量的人工,所以开发定时任务采集功能进行采集商品数据。只需要管理员设置好的采集条数、采集平台、采集内容和采集时间存放在数据库中。当到达指定时间后,系统会获取数据库中保存的要采集内容条件,然后自动进行采集.具体采集过程原理和自定义采集过程相同。其中采集时间使用cron表达式来表示时间,可以编写执行任务中降低管理员的操作难度和编写时的难度
定时任务采集使用Quartz定时任务工具,通过设置JobDetail任务、Trigger调度器和Scheduler触发器,当满足触发器的条件(其实就是管理员在定时采集中设置的cron表达式的时间),系统查询数据库获取对应的采集条数、采集平台和采集内容等信息,由调度器进行调度执行。
商品管理模块
该页面会展示商品编码、商品名称、图片、价格、店铺、来源和创建时间等详细信息,方便管理员对具体商品及逆行查看。该模块具有查找和删除功能,方便管理员对商品信息进行维护和查看。