基于大数据技术的博客系统研究与开发

2022-01-20 11:49
北京印刷学院学报 2021年12期
关键词:字段博文博客

施 鹭

(芜湖职业技术学院,芜湖 241000)

近年来,博客系统作为一种经典的网络应用模型,成为人们工作、家庭、社交领域中使用的交流工具,它改进了人们之间的沟通方式。本文研发的博客系统,选取大数据生态技术手段,设计实现博客系统中主要的功能,并运用爬虫技术,获取互联网上“有价值”的数据,推送到博客系统中。

一、系统的需求、技术选型和创新点

(一)系统需求

博客在国内从2000 年开始引入其概念,最显著的就是各大门户网站都构建了博客系统,人们通过博客系统发表自己的文章、评论,分享日常生活中的经验。博客不仅打破了传统门户网站话语权的权威性和独断性,而且使每个人的“个性化意见”可以快速、广泛地传播。

本文提出研发的基于大数据技术的博客系统,希望采用典型的软件开发技术,构建简洁、易用的博客系统,特点是加入爬虫技术手段,主动获取门户网站的每日热点新闻,推送到博客系统中,并选用分布式索引技术手段,实现博文数据的检索,提高系统的运行性能。

(二)技术选型和创新点

系统使用Java Web 作为技术实现手段,将整个博客系统业务分为用户接口层、业务逻辑层和数据访问层,即Servlet+Service+JSP,其中Servlet 负责接收用户端的各种业务请求,Service 层具体实现系统模块的功能,JSP 页面负责将用户请求的处理结果呈现给客户端。

数据爬虫模块,选用HttpClient 和HtmlCleaner组件,将爬取的数据经过加工处理后推送到数据库中。全文检索是博客系统中的一个核心业务功能,我们选择Solr 技术来构建索引服务器,博客数据经过中文分词模块处理后,在Solr 索引库中建立索引数据,实现全文检索功能。爬虫解析模块,将获取到的新浪、网易、凤凰网站的数据,转换成博文数据并推送给用户。

(三)系统实现的主要功能

博客系统的用户角色分为普通用户和管理员。对于管理员,系统提供统一的后台登录入口,管理员从后台登录后,可以对普通用户进行账号管理,包括停用或恢复账号、重置用户密码,可以查看或封停系统中的博文数据,查看或封停博文的用户评论数据。管理员可以对系统中的爬虫模块向用户推送博文的功能进行配置。

普通用户可细分为注册用户和游客,游客访问本系统受到限制,仅允许浏览文章。注册用户需要先完成用户注册,考虑系统的开放性,用户无须实名注册,但在用户注册时,需要提供唯一的手机号码,并完成短信验证。注册用户完成后,可以发布博文,编辑和修改博文。用户注册查看博文,可以点赞、评论、收藏或转发。注册用户可以在首页输入关键字,全文检索出包含该关键字的博文,同样可以在个人中心设置基本资料。

二、系统开发主要过程

(一)数据库设计

系统选取MySQL 作为业务数据库,运用PowerDesign 工具进行数据建模,分析数据模型之间的关系,最后生成SQL 脚本文件执行,得到所需全部数据表。用户表t_user 使用status 字段来表示用户状态(身份),值为0 表示管理员,值为1 表示注册用户,值为2 表示用户为禁用状态。用户表t_user 的基本字段有用户名称、头像地址、电子邮箱、登录密码、状态、手机号。博客表t_blog 记录注册用户发表的博客文章数据,该表的基本字段有类型名称、内容、图片地址、状态、用户ID、博文标签等。

除此之外,还有评论表t_commit,记录用户发表的评论数据,统计表t_statistical,记录博文的用户点赞、收藏数据。上述的几张表是系统的业务数据表,我们还需要给每张表建立对应的Java 实体类型,依次是为User 类、BlogType 类、Blog 类、Commit 类、Statistical 类,把这些类定义在系统的com.whit.blog.domain 包下。索引文档模型Article 是专门用来封装需要进行索引存储的数据模型,字段包含索引主键字段、博客文章标题、文章作者、发布日期时间、正文内容。

(二)系统开发环境及准备

本系统选取Java 8.0 作为开发语言,采用STS(Spring Tool Suite)作为编程工具,开发阶段选择使用VMwareWorkStation 虚拟机运行Solr 索引服务器。我们需要对Solr 索引服务器进行安装和必要的配置。首先在虚拟机平台中,将准备好的solr-4.10.4.tgz 安装包文件解压缩,并将IK 分词器IKAnalyzer2012FF_u1.jar 文件导入Solr 的安装目录位置下的solr-web 中的lib 目录,然后我们在IK分词器的配置文件schema.xml 中添加必要的参数信息,在该文件的properties 标签内,定义两组entry标签,内容分别是扩展字典文件名称和禁用词文件名称,最后我们将这两个文件和和配置文件schema.xml 一同放置在solr-web 中的类路径下。完成了IK 分词器组件的配置后,我们将Solr 索引服务器处理的字段和其字段的数据类型预先进行定义,部分代码如下所示。

这里定义了copyField 类型字段title_author_content,该字段的作用是当博客数据存储到Solr 索引库中后,博客的标题、作者、内容字段会复制一份到title_author_content 字段中,这样博客系统可以通过该字段来进行统一的索引查询。上述配置中,字段类型type 值均设置为text_ik,该字段类型对应的IK 分词器代码配置如下所示。

(三)功能模块实现

1.博客发表模块

博客发表模块提供给注册用户发表新博文,用户发表时,需要选择博文的类型,填写博文的标题,选择或新增标签,撰写博文的内容,也可以上传图片。系统允许博文的作者在查看自己发布的博文时,直接编辑或删除该博文,删除时,博文关联的评论、点赞等数据也会被一并删除。

2.全文检索模块

系统首页提供输入框,用户输入搜索关键字进行数据全文检索,将搜索的结果分页显示出来,用户点击某个博客链接后,查看到该博客的完整内容。

用户发表博文,系统将新数据存储到数据库中,同时将博文的标题、作者、正文数据,存储到Solr 索引服务器中,建立索引文档。首先定义SolrUtil 工具类,该类中定义Solor 索引服务器连接地址、端口号等参数,初始化HttpSolrServer 实例,该实例提供访问索引服务器的方法。接着实现建立索引文档、删除索引文档、查询索引文档方法。在系统存储博客文章时,调用addBean 方法,将封装好的Article 对象传入,Solor 会根据Article 对象的每个属性名,建立字段值与该属性的值对应的索引文档对象,并提交给Solr 索引服务器存储。在全文检索时,系统调用SolrUtil 提供的search 方法,将输入的查询关键字传入,搜索引擎根据之前配置的title_author_content 字段,执行字符串模糊匹配规则的检索,并将检索结果以Json 的数据格式返回给检索页面。

3.评论、收藏和点赞模块

该模块主要提供给注册用户多种互动交流功能,用户在阅读他人的博文后,可以输入评论文字,点击发表按钮发布评论,或者点击点赞按钮给该博文点赞数加一。点击博文下方的收藏按钮,将该博文加到自己的收藏列表。需要说明的是,评论发出后不可以修改评论数据,这是为了提高评论数据的时效性。在博文的下方,评论、收藏、点赞按钮上,会显示出博文的评论、收藏、点赞的统计数字,方便直观看出该博文的受欢迎程度。

4.数据爬取模块

数据爬取模块,选取几个门户网站的每日头条新闻或热点博客文章,经过系统一系列处理后推送到博客系统中。具体做法是,管理员在系统管理后台配置爬取数据目标网站地址、爬取任务开始时间和推送博文目标用户。数据爬取引擎开始工作时,先爬取目标网站的起始页面,再根据该页面的分页规则,依次获取所有数据列表页面,然后在这些数据列表页面中,解析出新闻或博客文章链接的原始URL 地址,并把这些地址缓存到URL 解析地址队列中。接着,数据解析引擎将依次从URL 解析地址队列中取出URL 地址,下载页面的内容并解析数据,将数据封装成由标题、作者、发布日期时间、内容组成的JSON 格式的博客数据,最后将解析完成的数据发送到MySQL 数据库存储并建立该数据的Solr 索引文档。

系统爬取外部网站中的数据并解析数据内容时,使用HttpClient+HtmlCleaner 的技术组合,基于Xpath 技术获取到网页内容中需要的元素。网站的网页结构可能会有变化,因此数据爬取模块,在每日启动爬取任务前,先检测待爬取网站,测试是否可获取到数据,如有异常则停止爬取任务并向管理员报告,更改目标网站的爬取规则并通过更新jar 包文件的形式更新爬取模块,具有较好的兼容性和可维护性。

三、结语和展望

系统后续的工作,一是考虑用户数和文章数据量不断增加后,对数据存储结构的升级改造,搭建分布式的Solor 集群。二是考虑数据爬取形成的博文推送给系统用户的方式,可构建用户画像并增加推荐机制,向系统用户推荐更符合自身需求的博客数据,提升用户体验。

猜你喜欢
字段博文博客
第一次挣钱
带钩或不带钩选择方框批量自动换
浅谈台湾原版中文图书的编目经验
谁和谁好
Review on Tang Wenzhi’s The Gist of Chinese Writing Gamut
博客天下
无正题名文献著录方法评述
无正题名文献著录方法评述
博客相册
博客相册