APP下载

高考志愿智能推荐系统的设计与实现

2023-05-08孙浩然武雪明吉雪芸

电脑知识与技术 2023年9期
关键词:数据库原理大数据技术

孙浩然 武雪明 吉雪芸

关键词:高考志愿填报;数据库原理;大数据技术;XPath爬虫技术

0 引言

河北省普通高考报名人数在2016 年就达到了42.31万人,到2022年报名人数甚至达到了75.32万人,仅六年的时间就增长了33万人。数量激增的考生在高考结束之后面临的是大学招生总数变化不大的问题,目前大多数高中考生忙于学习知识,锻炼应试能力,考生家长主要精力用于工作和生活中,这就导致填报志愿的应往届高中毕业生不了解当年的报考政策,对于理想院校历年分数和招生排名及所选学校专业划分和专业的优劣情况了解不够充分。为了解决这种由于“信息差”导致的应往届高中毕业生无法在自己的分数内选择到最好的高等院校的问题,团队开发了高考志愿智能推荐系统。

该系统主要为了解决高考填报志愿人员提供更多院校信息,为更多填报志愿的人员搭建一个数据准确、信息全面、搜索便捷的查询平台,更有利于解决填报志愿当中遇到的问题。

1 研究现状、目的及研究内容

搜索引擎以一定的策略在互联网当中进行搜集、发现信息、对信息进行整理、提取、组织和处理,并为用户提供检索服务,从而起到信息导航的作用。搜索引擎已经广泛地应用到日常生活当中,它涵盖了图书搜索、旅游出行和信息查找等领域,国外的发展较早,在各个领域也都有了比较成熟的垂直搜索系统[1]。垂直搜索引擎只是搜索互联网资源当中的某一行业领域,返回给用户该领域信息,具有高精度和深度等特点[2]。举例说明当今应用广泛的一个搜索引擎Tin⁃Eye。TinEye是网络上第一个以图搜图的图像搜索引擎[3]。TinEye支持语音搜索,搜索栏下有多个搜索分类选项。图片视频分类搜索时,TinEye会提供关键词更加细致的标签,来供用户选择,TinEye的搜索分类较少,但是用户可以选择使用安全搜索(屏蔽垃圾信息)。

对于院校信息的获取和分析当中,国内已出现了很多大体量的志愿填报网站,如掌上高考网站、高校考试服务中心、夸克高考等搜索网站。用户可以根据自己的分数、所在地区、所考科目等关键字来检索相关信息,也可以借助搜索引擎进一步筛选信息。搜索引擎已经成为第二大互联网应用技术[4]。

该研究目的是实现高考志愿填报领域的垂直搜索引擎系统,满足使用者对高校信息更加精准的信息检索需求。具体通过Python爬虫工具从阳光高考网站爬取所有高校当年的招生简章,往年录取分数等数据,对数据进行清洗并将其导入到Elastic Search中,然后再建立索引,使用SpringBoot和Vue进行开发,实现网站的搭建。主要包括以下模块:

1) 爬虫模块:对各地考试院、高校官网或者公众号进行数据爬取,对指定的URL進行页面下载,提取出页面中的专业、选科要求、各项分数线、录取人数,高校所在地和规模等信息。然后对获取到的信息进行清洗,将规范的数据存储到数据库里。

2) 信息检索模块:对数据表数据创建映射,进行中文分词,建立倒排索引。利用ElasticSearch模糊匹配实现搜索建议提示,多字段查找搜索功能来支持信息的智能检索。

3) 用户搜索模块:SpringBoot整合了很多优秀的框架,对Spring进行了全面的升级和优化,采用“约定优于配置”的核心思想,减轻开发人员的压力,从而在一定程度上提高开发效率[5]。该系统使用SpringBoot框架开发软件,提供友好的人机交互页面,方便考生进行智能检索。该系统提供关键字检索,比如根据省份、分数段、排位、高校、专业、单科成绩等信息检索,提供分数线区间检索,分数线曲线图查看等功能,满足考生多项需求,提高查找效率,为志愿填报提供依据。

2 需求分析

2.1 系统需求分析

项目中的系统是依据SpringBoot为核心框架的网站,用户登录后可以使用该引擎来搜索需要的信息,该系统可以返回给用户信息包括院校名称、院校基本信息、专业名称、专业分数区间和分数排名等信息,搜索的结果精确准确。

主要用户是志愿填报者。这类人群是该系统主要服务的人员,使用者希望可以在该网站中获取高校当前的录取信息和系统推荐的院校专业。他们会更加关注该系统搜索结果是否准确、此系统是否能快速响应、是否操作简单和收费合理。

2.2 系统分析

2.2.1 准确性需求分析

准确性要求获得的数据是真实的、有效的。该数据清洗也必须是有科学依据的,错误数据能够及时地处理,保证用户得到最后结果是正确的。要求能够使用合理的筛选规则,对爬取的数据要进行归类和清除。

2.2.2 实时性分析

实时性要求此系统的数据需要及时地进行更新操作,保证所获得的数据是符合当年高考志愿填报所需的信息,这需要定时地对该系统进行维护,保证系统能够第一时间获取所需的信息并进行数据的更换。

2.2.3 实用性分析

实用性要求该系统的页面是简洁易操作的。直接可以在浏览器上使用该系统,无须安装其他的软件和插件。系统需要进行合理的优化,使其具备颜色使用合理、布局符合使用规范、功能位置一目了然、人机交互简单等特性,使得使用人员更快找到所需内容。

2.2.4 高效性分析

高效性主要考验系统的反馈时间,当用户输入关键词时,系统能够快速地给出反馈,避免用户长时间的等待,提高用户的使用体验,理论上系统的响应时间不宜超过3秒。

2.2.5 隐私性分析

隐私性是当前用户重视的。系统不仅需要防范不法人员对网站进行渗透和攻击,拒绝来自用户的非规范请求,保障系统的安全,而且需要保障用户的私人信息不被第三者知晓。

3 系统总体设计

3.1 系统总体结构

根据需求分析当中的功能需求,系统共有三层结构,分别是业务层、数据层、用户层。系统总体设计使用的架构如图1所示。

用户表现层包括整个系统的人机交互页面,用户可以在首页查看志愿填报页面,点击志愿填报进入志愿填报页面。此时会有一个弹窗出现,需要填写用户的高考信息,包括高考省份、成绩类型、高考科目、高考分数、对应排名等信息,点击确认进入志愿填报页面,此时系统左侧会给出图表来表示推荐的院校和专业,系统右侧会给出当年的招生计划和专业分。

业务逻辑层给出了面向业务的服务接口,主要包含对高校的搜索、对专业的搜索、用户搜索的关键词,系统从存储层获取用户搜索的信息,用图表的方式反馈给用户。

数据存储层含有数据的持久化服务,主要分布为ElasticSearch索引库和MySQL数据库,爬虫获得的信息存储在进行数据清洗之后存入这两部分当中,用户的基本信息和搜索记录则存储在MySQL数据库中。

3.2 技术方案选型

综合考虑系统的总体结构与系统的落实,该系统选择使用Meaven工程来创建项目,并且使用主流的SpringBoot+Vue 框架,借助浏览器来实现人机交互。整个概念图如图2所示。

视图层主要为用户提供搜索页面,整体采用Vue框架来实现,根据Vue的特性,框架只关注系统的视图层,因此就必须要借助基于promise的网络请求库——axios,使用Vue-router去完成页面跳转工作,Vue用来作状态管理在Session中存储用户的历史记录。

控制层主要使用框架——SpringBoot,根据业务需求,把对系统当中的数据库操作封装成一个事务操作,当前端发出请求时,在Controller中进行请求映射并接受参数,调用相关的数据层来完成操作。

数据层使用ElasticSearch 索引库和MySQL 数据库,将使用Scrapy爬取并清洗好的数据导入索引库当中,索引库当中的每个文档包括一系列的搜索信息。使用MySQL数据库存储用户的历史记录,方便管理员收集信息。

3.3 系统工作流程

系统工作大致分为三块:

1) 数据获取;2) 数据处理;3) 实现信息检索。

3.4 数据库设计

该系统所使用的数据库为MySQL数据库,数据库当中共存储三张表,分别为search_record表、major表、university表。search_record记录用户的信息,包括日期、省份、高考科目、高考分数、对应排名、用户历史搜索等。major表则表示符合要求的专业;college表示符合要求的大学。

4 详细设计与实现

本章阐述高考志愿填报系统当中每一个模块之间的细节和实现的过程,表示出每个模块之间的关系,具体的设计流程。

4.1 爬虫模块

爬虫模块主要的功能是在阳光高考网站爬取系统所需要的数据,然后将这些数据进行清理并进行存储。处理后的数据是整个系统的数据源,是这个系统能够正确反馈的基石。

网络爬虫技术是搜索引擎的底层核心,其目的是采用最佳的访问路线,遍历整个互联网网页,将下载的网页内容进行网页结构解析、页面存储[6]。本软件采用爬虫框架爬取多个考试院、高校专业官方网站的高考数据并进行数据的清洗,创建数据库,将数据导入搜索引擎,对数据建立索引并搭建搜索系统,使用流行的开发框架进行软件开发,实现查询、智能检索、推荐以及图表曲线功能。爬虫模块包括网页下载及学校信息解析、数据清洗[7]。

爬虫进行数据爬取时,首先要确定一个最初的URL,以这个URL作为起点开始获取页面里的链接信息。爬虫在进行网页下载的同时又不断从下载页面中提取新的URL,并且放入URL队列中[8]。

完整的网页数据获取流程如图6所示。

4.2 数据清洗

数据从网页上爬取出来的结果是json文件,不符合es搜索引擎的存储要求,需要对数据进行清洗和格式化。

主要解决的是数据的格式和编码问题,一部分的信息经过该爬取会显示乱码信息,可以使用空字符串代替。第二个工具是将json格式处理为bulkapi格式。在数据清洗后直接手动将数据导入到ElasticSearch中,需要保证导入的json文件和官方要求一致。

4.3 信息索引模块

信息索引模块发挥的主要作用是对爬取的数据建立信息索引,主要使用ElasticSearch索引库。Elas⁃ticSearch是由Apache基金会开发的基于文本的搜索引擎[9]。该模块主要分为两部分,一部分是对爬取的数据进行分词,可以给使用者带来极大的方便。另一部分则是创建索引、建立映射及数据存储。映射就是索引当中文档的类型,这要求要根据实际需求建立映射,通過手动的方式将爬虫得到的数据导入索引库当中。

4.4 用户检索模块

用户检索模块的功能是为使用者反馈院校信息,这是整个系统最重要的一部分。在前面的模块中将获得的数据存储到索引库当中,下面需要用这些数据完成用户搜索服务。

4.4.1 院校专业查询

专业查询主要使用索引库当中关键字进行查找,选择用户需要的筛选条件,包括报考省份、成绩类型、高考科目、高考分数、对应排名等,系统会自动地将用户的查询结果显示到网页上。

4.4.2 搜索信息可视化

基于现实情况,团队将高考志愿填报与互联网大数据结合起来,利用互联网高效的信息集合能力和数据流通能力,帮助考生在短时间内获取更多真实有效的信息。根据考生的兴趣爱好、分数,智能推荐能被何种院校和专业录取,并智能分析录取的概率,人性化地将这些信息做成图表,更清楚地展示高校相关专业排名、所属城市、就业发展以及升学留学信息,帮助考生快速、准确地选择出自己心仪的高校。

5 总结

所做的工作:进行了高考志愿填报系统的总体设计,使用了主流的SpringBoot+Vue框架作为系统的主要框架,在上述介绍了涉及的技术,简单介绍了数据库的索引库的相关信息。

创新点:区别于传统的高考志愿填报参考系统,该系统对于考生的分数排位和所属层次的高等院校的覆盖更加广泛,能够让考生尽可能不浪费分数,上更好的大学。

不足之处:经验不足,可在细节处理方面仍然有很多需要改进的地方,希望能在接下来的项目设计和推进中不断完善该系统,为更多考生提供便利。

猜你喜欢

数据库原理大数据技术
基于《数据库原理》课程网站前台设计与开发
大数据技术对新闻业务的影响研究
基于多维立体化模式的数据库原理教学改革与实践
基于海洋特色的数据库原理案例教学设计与实践