基于Hadoop的新闻推荐系统

目录

摘要

Abstract II

第一章 绪论

1.1 研究背景 2

1.2 研究意义 2

1.3 研究内容 3

第二章 开发技术

2.1 Python语言 4

2.2 hive简介 4

2.3 Django框架简介 5

2.4 hadoop技术 5

第三章 需求分析 5

3.1 可行性分析 6

3.2 功能需求 7

3.3 非功能需求 8

第四章 概要设计

4.1 设计目标

4.2 功能模块设计

4.3 功能流程

4.4 数据库设计

第五章 系统实现

5.1前台普通用户功能的实现

5.2后台管理员功能的实现

第六章 系统测试

6.1 测试目的

6.2 测试方法

6.3 测试用例设计

结  论

参考文献

致谢

摘要

随着互联网技术不断地发展,网络与大数据成为了人们生活的一部分,而新闻推荐系统作为网上应用的一个全新的体现,由于其特有的便捷性,已经被人们所接受。目前主流的新闻推荐系统服务不仅不明确并且管理盈利较低,针对用户定制的新闻推荐系统更能够体现出其服务特色。

本项目以新闻推荐系统为研究背景,采用的框架为 Django、Hadoop技术和python开发了新闻推荐系统。本文通过分析新闻推荐系统的需求,建立起了相关的开发模型,构建出相关的系统需要的开发环境。通过调研,明确了新闻推荐系统的需求,最后开发实现了系统并进行了测试。

关键词:新闻推荐系统; Django框架;python语言

Abstract 

With the continuous development of Internet technology, network and big data have become a part of people's life, and news recommendation system, as a new embodiment of online application, has been accepted by people because of its unique convenience. At present, the mainstream news recommendation system service is not only unclear and low management profit, but also the customized news recommendation system can better reflect its service characteristics.

Based on the research background of news recommendation system, this project developed a news recommendation system based on Django, Hadoop technology and python. By analyzing the demand of news recommendation system, this paper establishes the relevant development model and builds the development environment required by the relevant system. Through investigation, the demand of news recommendation system is clarified, and finally the system is developed and tested.

Keywords:News recommendation system; Django framework; python language

第一章 绪论

1.1 研究背景

在二十一世纪,互联网已经成为了人们的必需品,与此同时,大数据技术也在不断地发展之中。随着大数据的技术应用于Internet中,新闻推荐系统实现了用户能够在虚拟的环境中使用系统的功能[1]。

随着互联网时代的普及,有非常多的产业可以借助于网络使用其方便的优势飞速发展,新闻推荐系统也在快速发展之中。随着时间越来越可贵的今天,对于用户来说,新闻推荐系统的吸引之处在于它的方便,同时新闻推荐系统具有多样化的选择,用户可以通过网络的方式使用系统的功能。有了新闻推荐系统的话[2],管理员可以提高工作效率和用户可以提升体验感。

1.2 研究意义

随着互联网技术的不断和快速发展,网络与大数据很早就成为了人们生活中的一部分,新闻推荐系统由于其特有的便捷性,用户能够更加容易地接受。互联网有了这种便捷公告消息、新闻信息等分析形式,也是一种新型的全新应用形式[3]。从侧面来看,新闻推荐系统还能够推进网上用户查看爬取下的大数据新闻信息的普及。

同传统的人工统计数据模式相比,新闻推荐系统具有较多的优势。建立规范化的流程通常可以解决用户查询新闻信息分析问题,而目前如果需要管理网站爬取下的大数据,管理员依然以人工的方式进行管理的话太过于落后。新闻推荐系统处理数据越来越趋于信息化,这种模式需要依赖于智能化手段管理。随着科技发展的进步与大数据的普及,信息技术能够改善我们的生活,现在许多生活场景都需要信息化技术帮助改善我们的生活。

1.3 研究内容

(1)本次针对开发设计系统并设置了相关的实施方案,利用完整的软件开发流程进行分析,完成了设置不同用户的操作权限和相关功能模块的开发,最后对系统进行测试。

(2)框架可以帮助程序开发者快速构建软件的整体层次,本次开发所使用的框架为python和 Django,具有较强的开发环境部署的优势,程序开发者可以快速构建出相关的软件基本框架,通过多种框架的开发可以帮助程序开发者减少代码量,提升系统的安全和稳定性,能够帮助新闻推荐系统功能模块的处理[4]。

(3)数据的操作需要开源框架规范用户的操作,不仅能满足最基本的标准,还能利用数据库的约束关系约束数据库记录,这样就可以使得系统实体和数据库表字段相映射,通过他们之间的关系模型设置系统实体间的关系。

2.1 Python语言

Python是由荷兰数学和计算机研究学会的吉多·范罗苏姆于20世纪90年代设计的一款高级语言。Python优雅的语法和动态类型,以及解释型语言的本质,使它成为许多领域脚本编写和快速开发应用的首选语言。Python相比与其他高级语言,开发代码量较小,代码风格简洁优雅,拥有丰富的第三方库。Python的代码风格导致其可读性好,便于维护人员阅读维护,程序更加健壮。Python能够轻松地调用其他语言编写的模块,因此也被成为“胶水语言”。

Python的应用场合非常广泛,在科研领域中,可以用Python训练人工智能模型,也可以对实验数据进行数据分析。在生活中,Python提供了很多优秀的、开源的Web开发框架,例如 Django、Flask、Pyramid、Tornado等。知乎、豆瓣网、Youtube等知名应用都是由Python为基础进行开发的。相比于其他框架, Django有着更加丰富的插件,作为企业级框架也很好上手,适合本次开发。此次新闻推荐系统是开发一个Web应用,采用 Django框架,将在下一节进行具体介绍。本次开发选用的是Python3.6.4版本。

2.2 hive简介

hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表。

2.3 Django框架简介

Django被官方称之为“完美主义者框架”,只需要很少的代码就能更快的完成一个优秀的Web应用。Django采用了MTV框架模式,此模式根据MVC进行改进形成了更适于Django的设计模式。M为模型(Model)、T为模板(Template)、V为视图(View)。

2.4 hadoop技术

1. Hadoop Common:Hadoop体系最底层的模块(基础模块),为Hadoop各子项目提供系统配置工具Configuration、远程过程调用RPC、序列化机制和日志操作等。

2. HDFS:Hadoop Distributed File System是具有高度容错性的文件系统,适合部署在廉价机器上。HDFS提供高吞吐量的数据访问,非常适合大规模数据集上的应用。

3. YARN:Yet Another Resource Negotiator是统一资源管理和调度平台,解决了上一代Hadoop资源利用率低和不兼容异构计算框架等多种问题,提供资源隔离方案和双调度器的实现。

4. MapReduce:一种编程模型,利用函数式编程思想,将数据集处理过程分为Map和Reduce两个阶段,非常适合进行分布式计算。支持Java、C++、Python、PHP等多种语言。

第三章 需求分析

3.1 可行性分析

3.1.1 经济可行性研究

新闻推荐系统能够给用户带来不少的方便,如果用户能够拥有新闻推荐系统,则可以对系统进行简单管理,用户可以节省不少资金。新闻推荐系统的实现能够解决传统管理模式不必要的经济支出,尤其是其中的人力资源成本,传统的新闻推荐系统需要大量的人力资源支持,并且往往需要管理者手动记载数据。

3.1.2 技术可行性研究

根据前期分析了系统的需求和背景,最终确定了可使用的软件体系和技术完成新闻推荐系统的开发。系统架构和使用的开发技术都是较为好用的开发模型,综合现有的新闻推荐系统,本次开发选用的技术是可行的。

3.1.3社会可行性

社会可行性,广义而讲可涉及到道德方面、法律方面、社会方面,每个方面都会影响系统的形成。本系统的是独立且没有任何传播性质的信息,更涉及不到道德层面,法律层面;本系统也没有触发法律,没有赌博、黄色等类型信息,同时也是遵从国家法律,不会显示任何触发法律层面的信息;社会方面,该系统是为方便用户提供更好的服务,是轻量级的新闻推荐系统,会为人们带来快速并有效查询的功能,也是具有贡献意义的。总体而言,该系统也是具有社会可行性的。

3.1.4法律可行性分析

新闻推荐系统是自己独立设计的,该系统是本人开发出来做毕业设计之用,并不会侵犯他人、集体和国家的利益。该系统使用正版软件开发,所有参考资料都是正规网站查询分析得出,开发的技术完全是开源免费的工具,百分百遵守国家法律法规。不会出现任何违反国家的政策和法律的。

3.2 功能需求

3.2.1 用例概述

           

图3.1 普通用户用例图

       

图3.2 管理员用例图

用例的简要描述如表3.3所示。

1.普通用户信息管理

普通用户信息管理用例描述能够描述系统中的用户信息管理功能,用户信息管理用例描述如表3.3所示。

表3.3 普通用户信息管理用例描述

用例标识

3.3

用例名称

编辑普通用户的相关信息

参与者

管理员

前置条件

管理员需要输入正确的用户名和密码登录系统

后置条件

修改用户信息

用例概述

管理员修改用户信息

基本事件流

1.管理员输入正确的用户名和密码登录到系统当中

2.管理员在用户信息管理界面点击修改按钮提交修改的用户信息

3.用户信息修改成功

备选事件流

4输入的信息需要合法才能够成功修改

备注

2.登录

登录用例描述能够描述系统中的登录功能,登录用例描述如表3.4所示。

表3.4 登录用例描述

用例标识

3.4

用例名称

登陆

参与者

普通用户、管理员

前置条件

普通普通用户和管理员需要输入正确的用户名和密码

后置条件

登录

用例概述

普通普通用户和管理员登录

基本事件流

1.普通普通用户和管理员进入到登录页面当中

2.管理员和用户输入用户名和密码登录到系统当中

备选事件流

3.输入的信息需要和数据库信息相匹配才能够登录

备注

3.角色信息管理

角色信息管理用例描述能够描述角色中的角色信息管理功能,角色信息管理用例描述如表3.5所示。

表3.5 角色用例描述

用例标识

3.5

用例名称

编辑角色的相关信息

参与者

管理员与普通用户

前置条件

管理员需要输入正确的用户名和密码登录角色

后置条件

修改角色信息

用例概述

管理员修改角色信息

基本事件流

1.管理员输入正确的用户名和密码登录到角色当中

2.管理员在角色信息管理界面点击添加按钮提交新添加的角色信息

3.角色信息添加成功

备选事件流

4.输入的信息需要合法才能够成功添加

3.3 非功能需求

(1)可用性。该新闻推荐系统需要简单易操作,用户能够快速方便地上手。

(2)可扩展性。该系统设计的时候采用的是模块化的方式,当能够充分了解系统的业务需求的时候,可以通过分解业务流程,分为不同的模块进行开发,

(3)可维护性[5]。如果代码的可理解性越强的话,这能够确保系统设计风格更加统一,使用有意义和结构化的程序设计方法,这样可以保证后续修改新闻推荐系统的时候要较为方便,使得维护系统要变得更加简单[6]。

(4)流畅性。系统运行速度需要不慢,并且多个用户使用系统的时候,用户在操作的时候能够顺畅。

第四章 概要设计

4.1 设计目标

经过需求分析之后,下一步要做的是定下能够满足基本要求的系统,进而设计出对应的系统。系统设计内容应该需要包括明确新闻推荐系统的设计方法,将系统功能分成若干个模块,确立各个模块需要什么功能以及与其它模块的关系,

对划分的功能模块采取技术设计和评价[7]。

本新闻推荐系统除了需要提供用户所需的基本功能之外,还不能有繁杂的操作方式,这能够给用户带来良好的体验。用户界面不仅需要简单友好关键在布局上需要能够适应大多数用户的使用习惯,能够保证用户在使用软件的流畅度[8]。

4.2功能模块设计

该章节的功能模块设计,只是大概描述了系统的所有功能模块,将功能按权限来讲解。系统总体结构图如图4-1所示。

图4.1 系统总体结构图

4.3 功能流程

(1)登录

用户想要使用系统的功能之前首先需要登录,在登录页面中输入用户名和密码之后点击登录按钮,如果通过了验证则能够进入到主页当中[9]。

图4.2 登录流程图

(2)查询

管理员登录系统之后可以在后台管理中搜索系统的信息,如果输入的系统信息在数据库记录中找不到则不能显示查询信息。

图4.3 查询流程图

(3)普通用户

管理员登录系统后可以修改用户信息[10]。

图4.4 普通用户流程图

4.4 数据库设计

4.4.1 概念性数据模型

新闻推荐系统需要数据库存储系统中的信息,MySQL数据库能够处理系统的信息,当新闻推荐系统需要数据的时候,MySQL数据库能够取得数据交给服务端处理。MySQL数据库能够使用可视化软件操作,管理员可以在可视化软件对数据库的信息机芯管理。

系统数据层设计包括了E-R设计,系统数据实体的设计依赖于E-R的分析和设计,通过E-R能够得到数据库表的设计,E-R能够描述系统所涉及到的实体,还能够描述系统中不同实体的联系和关系[11]。

(1)需要能够充分地反映现实世界,包括现实事物之间的联系,这样有利于满足不同程序开发者对数据处理的需要。

(2)需要能够容易理解,从而可以使得即使不熟悉计算机的用户也可以快速使用系统,如果一个数据库设计得较为成功的话用户也可以选择参与。

(3)需要能够易于变更。当系统应用环境发生改变的时候,概念模型往往需要改变,因此数据库需要设计得以后容易修改概念模型。

轮播图E-R如图4.5所示。

图4.5 轮播图E-R图

公告E-R如图4.6所示。

图4.6公告E-R图

普通用户信息E-R如图4.7所示。

图4.7普通用户信息E-R图

新闻信息E-R如图4.8所示。

图4.8新闻信息E-R图

新闻推荐系统总体E-R如图4.9所示。

     

图4.9新闻推荐系统总体E-R图

4.4.2 数据库表设计

4.1:access_token (登陆访问时长)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

token_id

int

10

0

N

Y

临时访问牌ID

2

token

varchar

64

0

Y

N

临时访问牌

3

info

text

65535

0

Y

N

4

maxage

int

10

0

N

N

2

最大寿命:默认2小时

5

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

7

user_id

int

10

0

N

N

0

用户编号:

表4.2:auth (用户权限管理)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

auth_id

int

10

0

N

Y

授权ID:

2

user_group

varchar

64

0

Y

N

用户组:

3

mod_name

varchar

64

0

Y

N

模块名:

4

table_name

varchar

64

0

Y

N

表名:

5

page_title

varchar

255

0

Y

N

页面标题:

6

path

varchar

255

0

Y

N

路由路径:

7

position

varchar

32

0

Y

N

位置:

8

mode

varchar

32

0

N

N

_blank

跳转方式:

9

add

tinyint

3

0

N

N

1

是否可增加:

10

del

tinyint

3

0

N

N

1

是否可删除:

11

set

tinyint

3

0

N

N

1

是否可修改:

12

get

tinyint

3

0

N

N

1

是否可查看:

13

field_add

text

65535

0

Y

N

添加字段:

14

field_set

text

65535

0

Y

N

修改字段:

15

field_get

text

65535

0

Y

N

查询字段:

16

table_nav_name

varchar

500

0

Y

N

跨表导航名称:

17

table_nav

varchar

500

0

Y

N

跨表导航:

18

option

text

65535

0

Y

N

配置:

19

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

20

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表4.3:collect (收藏)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

collect_id

int

10

0

N

Y

收藏ID:

2

user_id

int

10

0

N

N

0

收藏人ID:

3

source_table

varchar

255

0

Y

N

来源表:

4

source_field

varchar

255

0

Y

N

来源字段:

5

source_id

int

10

0

N

N

0

来源ID:

6

title

varchar

255

0

Y

N

标题:

7

img

varchar

255

0

Y

N

封面:

8

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表4.4:comment (评论)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

comment_id

int

10

0

N

Y

评论ID:

2

user_id

int

10

0

N

N

0

评论人ID:

3

reply_to_id

int

10

0

N

N

0

回复评论ID:空为0

4

content

longtext

2147483647

0

Y

N

内容:

5

nickname

varchar

255

0

Y

N

昵称:

6

avatar

varchar

255

0

Y

N

头像地址:[0,255]

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

9

source_table

varchar

255

0

Y

N

来源表:

10

source_field

varchar

255

0

Y

N

来源字段:

11

source_id

int

10

0

N

N

0

来源ID:

表4.5:hits (用户点击)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

hits_id

int

10

0

N

Y

点赞ID:

2

user_id

int

10

0

N

N

0

点赞人:

3

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

表4.6:news_classification (新闻分类)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

news_classification_id

int

10

0

N

Y

新闻分类ID

2

news_classification

varchar

64

0

Y

N

新闻分类

3

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表4.7:news_data (新闻数据)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

news_data_id

int

10

0

N

Y

新闻数据ID

2

news_main_tag

varchar

64

0

Y

N

新闻主标签

3

news_tags

varchar

64

0

Y

N

新闻标签

4

news_topic

varchar

64

0

Y

N

新闻题目

5

release_time

varchar

64

0

Y

N

发布时间

6

details_link

varchar

255

0

Y

N

详情链接

7

news_author

varchar

64

0

Y

N

新闻作者

8

publishing_address

varchar

64

0

Y

N

发布地址

9

article_content

text

65535

0

Y

N

文章内容

10

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

11

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表4.8:news_information (新闻信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

news_information_id

int

10

0

N

Y

新闻信息ID

2

news_main_tag

varchar

64

0

Y

N

新闻主标签

3

news_tags

varchar

64

0

Y

N

新闻标签

4

news_topic

varchar

64

0

Y

N

新闻题目

5

release_time

varchar

64

0

Y

N

发布时间

6

details_link

varchar

255

0

Y

N

详情链接

7

news_author

varchar

64

0

Y

N

新闻作者

8

publishing_address

varchar

64

0

Y

N

发布地址

9

article_content

text

65535

0

Y

N

文章内容

10

news_classification

varchar

64

0

Y

N

新闻分类

11

cover_photo

varchar

255

0

Y

N

封面图片

12

hits

int

10

0

N

N

0

点击数

13

praise_len

int

10

0

N

N

0

点赞数

14

recommend

int

10

0

N

N

0

智能推荐

15

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

16

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表4.9:notice (公告)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

notice_id

mediumint

8

0

N

Y

公告id:

2

title

varchar

125

0

N

N

标题:

3

content

longtext

2147483647

0

Y

N

正文:

4

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

5

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表4.10:praise (点赞)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

praise_id

int

10

0

N

Y

点赞ID:

2

user_id

int

10

0

N

N

0

点赞人:

3

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

8

status

bit

1

0

N

N

1

点赞状态:1为点赞,0已取消

表4.11:regular_users (普通用户)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

regular_users_id

int

10

0

N

Y

普通用户ID

2

user_name

varchar

64

0

Y

N

用户姓名

3

user_gender

varchar

64

0

Y

N

用户性别

4

user_age

varchar

64

0

Y

N

用户年龄

5

examine_state

varchar

16

0

N

N

已通过

审核状态

6

user_id

int

10

0

N

N

0

用户ID

7

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表4.12:slides (轮播图)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

slides_id

int

10

0

N

Y

轮播图ID:

2

title

varchar

64

0

Y

N

标题:

3

content

varchar

255

0

Y

N

内容:

4

url

varchar

255

0

Y

N

链接:

5

img

varchar

255

0

Y

N

轮播图:

6

hits

int

10

0

N

N

0

点击量:

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表43.:upload (文件上传)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

upload_id

int

10

0

N

Y

上传ID

2

name

varchar

64

0

Y

N

文件名

3

path

varchar

255

0

Y

N

访问路径

4

file

varchar

255

0

Y

N

文件路径

5

display

varchar

255

0

Y

N

显示顺序

6

father_id

int

10

0

Y

N

0

父级ID

7

dir

varchar

255

0

Y

N

文件夹

8

type

varchar

32

0

Y

N

文件类型

表4.14:user (用户账户:用于保存用户登录信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

user_id

mediumint

8

0

N

Y

用户ID:[0,8388607]用户获取其他与用户相关的数据

2

state

smallint

5

0

N

N

1

账户状态:[0,10](1可用|2异常|3已冻结|4已注销)

3

user_group

varchar

32

0

Y

N

所在用户组:[0,32767]决定用户身份和权限

4

login_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

上次登录时间:

5

phone

varchar

11

0

Y

N

手机号码:[0,11]用户的手机号码,用于找回密码时或登录时

6

phone_state

smallint

5

0

N

N

0

手机认证:[0,1](0未认证|1审核中|2已认证)

7

username

varchar

16

0

N

N

用户名:[0,16]用户登录时所用的账户名称

8

nickname

varchar

16

0

Y

N

昵称:[0,16]

9

password

varchar

64

0

N

N

密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成

10

email

varchar

64

0

Y

N

邮箱:[0,64]用户的邮箱,用于找回密码时或登录时

11

email_state

smallint

5

0

N

N

0

邮箱认证:[0,1](0未认证|1审核中|2已认证)

12

avatar

varchar

255

0

Y

N

头像地址:[0,255]

13

open_id

varchar

255

0

Y

N

针对获取用户信息字段

14

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

15

vip_level

varchar

255

0

Y

N

会员等级

16

vip_discount

double

11

2

Y

N

0.00

会员折扣

表4.15:user_group (用户组:用于用户前端身份和鉴权)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

group_id

mediumint

8

0

N

Y

用户组ID:[0,8388607]

2

display

smallint

5

0

N

N

100

显示顺序:[0,1000]

3

name

varchar

16

0

N

N

名称:[0,16]

4

description

varchar

255

0

Y

N

描述:[0,255]描述该用户组的特点或权限范围

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

8

register

smallint

5

0

Y

N

0

注册位置:

9

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

  • 系统实现

5.1前台普通用户功能的实现

当游客打开系统的网址后,首先看到的就是首页界面。在这里,游客能够看到新闻推荐系统的导航条显示首页、公告消息、新闻信息、我的帐户、个人中心等,系统首页界面如图5.1所示:

图5.1 系统首页界面

在注册流程中,普通用户在Vue前端填写必要信息(如帐号、密码等)并提交。前端将这些信息通过HTTP请求发送到Python后端。后端处理这些信息,检查用户名是否唯一,并将新用户数据存入MySQL数据库。完成后,后端向前端发送注册成功的确认,前端随后通知普通用户完成注册。这个过程实现了新用户的数据收集、验证和存储,如图5.2所示:

图5.2 普通用户注册

在登录流程中,普通用户首先在Vue前端界面输入用户名和密码。这些信息通过HTTP请求发送到Python后端。后端接收请求,通过与MySQL数据库交互验证用户凭证。如果认证成功,后端会返回给前端,允许普通用户访问系统。这个过程涵盖了从普通用户输入到系统验证和响应的全过程,如图5.3所示: 

图5.3普通登录界面

普通用户点击新闻信息:在新闻信息页面的搜索栏输入新闻主标签、新闻标签、新闻分类,进行查询,可以查看新闻主标签、新闻标签、新闻题目、发布时间、详情链接、新闻作者、发布地址、新闻分类、点赞数、文章内容等内容,也可以点击点赞、收藏或评论等操作,如图5.4所示:

图5.4新闻信息页面

普通用户点击个人中心,在个人中心页面可以查看个人首页、收藏内容,如图5.5所示:

图5.5个人中心页面

5.2 后台管理员功能的实现

在登录流程中,管理员首先在Vue前端界面输入用户名和密码。这些信息通过HTTP请求发送到Python后端。后端接收请求,通过与MySQL数据库交互验证用户凭证。如果认证成功,后端会返回给前端,允许管理员访问系统。这个过程涵盖了从管理员输入到系统验证和响应的全过程,如图5.6所示。

图5.6管理员登录界面

管理员登录进入新闻推荐系统可以查看后台首页、系统用户、新闻分类管理、新闻数据管理、新闻信息管理、系统管理、公告信息管理等功能,进行详细操作,如图5.7所示。

图5.7管理员功能界面图

管理员点击普通用户;在普通用户页面输入用户账号、用户姓名,进行搜索,然后查看昵称、用户姓名、用户性别、用户年龄、创建时间、更新时间还可以点击添加或删除等操作;如图5.8所示。

图5.8普通用户界面图

管理员点击新闻分类管理;在新闻分类管理页面输入新闻分类,进行搜索,然后查看新闻分类,还可以点击新闻分类添加或删除等操作;如图5.9所示。

图5.9新闻分类管理界面图

管理员点击新闻数据管理;在新闻数据页面输入新闻主标签、新闻标签,进行搜索,然后查看新闻主标签、新闻标签、新闻题目、发布时间、详情链接、新闻作者、发布地址等内容,还可以点击下载导入文档、导入、显示新闻等操作;如图5.10所示。

图5.10新闻数据息管理界面图

管理员点击新闻信息管理;在新闻信息查看测试新闻、新闻标签、新闻题目、发布时间、发布地址、新闻作者、发布地址等内容,还可以点击查看评论等操作;如图5.11所示。

图5.11新闻信息管理界面图

管理员点击系统管理;在系统管理页面对轮播图管理,进行查询、添加、修改详情或删除等操作;如图5.12所示。

图5.12系统管理界面图

管理员点击公告信息管理;在公告信息页面对标题、创建时间、更新时间,进行查询、添加、修改详情或删除等操作;如图5.13所示。

图5.13公告信息管理界面图

 

  第六章 系统测试

系统测试的目的是为了能够尽可能地找出系统中现有的系统缺陷,对发现的缺陷进行修复。一般来说,如果发现了功能模块有缺陷,那么该功能模块往往还包含有许多缺陷。如果在软件测试中能够发现软件缺陷,那么可以提前修复从而降低软件开发成本[12]。

6.1 测试目的

系统测试能够全面测试新闻推荐系统,包括不同功能模块的测试。新闻推荐系统是较为复杂的应用,需要软件开发者充分地运用,这样能够保证系统的稳定运行和数据库中的数据较为安全可靠。有效地测试给系统带来了许多的益处。在系统测试阶段不仅需要玩测试用例的设计还需要完成执行。用例的侧重点在于最终实现的软件是否能够满足需求规格说明书。软件开发者测试该新闻推荐系统的目的为达到用户需求的基础之上,同时需要保证系统的可用性。

6.2 测试方法

单元测试能够对系统的环境进行测试,因为新闻推荐系统的开发环境较为复杂,所以一旦软件开发完成之后,需要在开发环境测试软件,在开发环境中使用debug的功能测试软件,观察数据库的数据是否能够正常更新,这样有利于及时更新系统存在的错误。

系统测试能够发现软件的缺陷,通过软件的用途实现,软件开发者不用去了解新闻推荐系统的内部结构,从用户的角度对软件进行测试。测试软件需要结合软件的内部结构,检测软件是否能够正确地反馈。在使用白盒测试的时候,软件开发者需要注重程序的内部逻辑,对其测试并得出相关的测试数据[13]。

6.3 测试用例设计

本系统在完成之后对代码根据功能模块划分成不同的代码块,对相应的代码块测试,用以验证系统功能的正确性。最后对系统进行完整测试,对集成的模块进行测试。本系统通过登录不同的角色从而对系统进行测试。在测试的过程当中,本文设计了测试用例,对测试过程详细记录下来,部分主要测试用例如下所示[14]。

(1)注册

表6.1 注册用例

序号

关注点

测试点

测试方法

期待结果

1

普通用户注册

普通用户是否能够成功注册

在注册界面中普通用户输入不完整的注册信息

注册失败,系统提示用户需要输入完整的普通用户信息

2

普通用户注册

普通用户是否能够成功注册

在注册界面中普通用户输入系统已经存在的普通用户信息

注册失败,系统提示普通用户信息已经存在

(2)登录

表6.2 登录用例

序号

关注点

测试点

测试方法

期待结果

1

普通用户登录

普通用户是否能够成功登录

在登录界面中普通用户在输入框中不输入用户名

登录失败,系统提示用户需要输入用户名

2

普通用户登录

普通用户是否能够成功登录

在登录界面中普通用户在输入框中不输入密码

登录失败,系统提示用户需要输入密码

3

普通用户登录

普通用户是否能够成功登录

在登录界面中普通用户输入的信息跟数据库记录 匹配不上

登录失败,系统提示用户需要重新输入用户名和密码

(3)普通用户

表6.3 普通用户用例

序号

关注点

测试点

测试方法

期待结果

1

普通用户

管理员是否能够正常管理用户的信息

管理员进入到普通用户功能界面当中的时候,点击添加按钮添加用户信息

如果输入的信息合法则能够添加成功

2

普通用户

管理员是否能够正常管理用户的信息

管理员进入到普通用户功能界面当中的时候,点击修改按钮修改用户信息

如果修改的时候输入的信息合法则能够正常地修改

3

普通用户

管理员是否能够正常管理用户的信息

管理员进入到普通用户功能界面当中的时候,点击搜索按钮搜索用户信息

如果输入的用户名称和数据库记录相符合则能够成功地查出信息

4

普通用户

管理员是否能够正常管理用户的信息

管理员进入到普通用户功能界面当中的时候,点击删除按钮删除用户信息

如果需要删除的用户信息和其它表还有关联则不能删除

结  论

经过这几个月的努力,在老师和同学的帮助与指导下,对系统顺利完成。对于该系统的研究和开发虽然没有耗费大量的时间,但为了成功完成该新闻推荐系统,消耗了大量的经历和汗水去了解学习这方面涉及到的专业知识以及开发环境的应用。

该系统的设计与实现,是经过了很长时间的分析、观察、调研和研究分析并整理资料实施的。新闻推荐系统采用 python开发语言、 Django框架以及MySQL数据库等技术开发与设计。该系统主要分为普通用户和管理员两个角色。该新闻推荐系统分为前台和后台两大部分。前台的主要功能为用户展示公告消息、新闻信息等,并对一些数据进行记录。后台的主要任务是对数据的一些准备处理的工作,对于管理员的数据属性的添加、维护和修改。每个功能在完成各自任务的同时也相互合作,一起来处理各个任务以及进程。

尽管该系统对用户可以满足一些基本的新闻推荐系统的需求,但该系统还存在许多问题和有待完善的地方。主要分为以下两点:

(1)该新闻推荐系统的适用面比较局限。页面的设置还是过于繁琐,不够简洁。加上社会方面的飞速发展,用户的条件也在发生新的变化。该系统还存在大数据下的并发和并行操作的不稳定性,当一个时间段内或者同一时刻时,过量的用户访问该网站会让网站的服务器出现崩溃的现象,一些操作无法正常的运行。种种原因使得该系统存在一些局限性。

(2)需要人工来处理的数据模块太多,需要减少大量的人工操作。在对新闻推荐系统信息处理的程序中,难免会出现各种各样的错误数据或者是异常数据,一旦这些数据大量积累存在过多时,系统自我调节修复能力有限就不得不需要人工的干预了。但是人工如果经常去进行操作的话,就会造成该系统的运行速度变慢,对其余正确的数据产生干扰,而且有可能对正确数据的损害以及泄露,从而将会减少该系统的稳定性。对于人力和财力都造成了不必要的浪费。

从上述可以看出该新闻推荐系统还有很多不足之处,在日后要结合具体项目问题进行修改和研究。

参考文献

[1] 随机游走与BIRCH融合的聚类统计方法. 夏小娜.统计与决策,2021

[2] 最小一乘导数估计的统计方法与优化. 支席年;夏小娜.统计与决策,2021

[3] 智慧教学管理的决策架构方案——基于“数据管理——业务设计——平台架构”的决策维度分析. 夏小娜;戚万学.现代教育技术,2021

[4] 大数据驱动的学习分析技术研究进展. 胡金蓉;邹茂扬;文武;周子龙.现代电子技术,2020

[5] 决策分类器在空气质量数据分析中的实证对比. 付悦;夏小娜.计算机技术与发展,2020

[6] 基于兴趣相似度传递的增强LSH统计预测算法. 夏小娜;邹麒.计算机应用与软件,2020

[7] 一种联系数表达的位置不确定数据流聚类算法. 史玲娟;黄德才.小型微型计算机系统,2020

[8] Consideration of the Local Correlation of Learning Behaviors to Predict Dropouts from MOOCs. Yimin Wen;Ye Tian;Boxi Wen;Qing Zhou;Guoyong Cai;Shaozhong Liu.Tsinghua Science and Technology,2020

[9] 语义增强的在线学习行为预测研究. 叶俊民;罗达雄;陈曙;廖志鑫.小型微型计算机系统,2020

[10] 以教学行为为关键线索的智慧校园探究. 夏小娜;戚万学.现代教育技术,2020

[11] Uncovering university students’ device usage patterns in a Korean online learning context using learning analytics. Ko Myong Hee.Computer Assisted Language Learning,2022

[12] The impacts of constructivist learning design and learning analytics on students’ engagement and self-regulation. Banihashem Seyyed Kazem;Farrokhnia Mohammadreza;Badali Mehdi;Noroozi Omid.Innovations in Education and Teaching International,2022

致谢

大学的时光慢慢接近了尾声,论文即将将要完成,我要感谢我的指导老师,系统开发设计实现是在我的指导老师指导下完成的。指导老师不仅有严肃的科学态度且有着严谨的治学精神,这些都深深地影响着我。指导老师在学业上给了我细心的指导,在思想和生活上也影响了我许多,在此向老师表达敬意。指导老师的专业素养给我的职业生涯起到了不小的作用。在此,我向指导老师表达感谢。

其次,还要感谢学校能够提供了一个良好的学习生活环境,让我学习了很多的计算机知识,而且还有许多参考资料可以查阅,在查阅资料的时候学到了不少的知识,这都要感谢我的母校。同时还要感谢在宿舍一起生活的同学们,虽然舍友们来自不同的地方,并且有着不同的生活经历,但是在多年的学习生活中,同学们不仅互相帮助而且还共同努力学习知识,和同学们在一起,这给了我许多精神上的支持。我们一起面对并且解决多种困难,这一切让我感受到温暖。

最后,我还非常感谢我的家人,感谢我的家人们提供了学习环境供我学习,在生活中给了我无微不至的关怀,正是他们给了我很多的帮助,才使得我学习能够顺利完成。

### 基于Hadoop新闻推荐系统架构设计 在构建基于Hadoop生态系统的新闻推荐系统时,整体架构通常分为多个层次来处理不同阶段的任务。以下是该类系统的一个典型架构设计方案: #### 数据采集层 负责收集来自各种渠道的数据源,包括但不限于用户的浏览记录、点击行为和其他交互活动。此部分可以通过Flume或Kafka等工具完成高效的数据传输。 #### 存储管理层 采用分布式文件系统如HDFS存储海量原始日志数据;对于结构化更高的用户画像信息,则可能存放在NoSQL数据库比如HBase里。这一步骤确保了大规模数据集的有效管理和快速访问[^2]。 #### 计算引擎层 利用MapReduce编程模型执行批处理作业,对历史积累下来的大规模离线数据进行复杂计算,生成个性化的推荐列表。此外,在实时场景下还可以借助Spark Streaming来进行流式数据分析,提供即时反馈给前端应用[^1]。 #### 特征工程与算法模块 在此环节中,会运用机器学习库(例如MLlib)训练多种预测模型,并提取有用的特征向量用于后续个性化推送逻辑判断。同时支持A/B测试机制评估新旧版本效果差异[^3]。 #### 推荐服务接口 最后对外暴露RESTful API供客户端调用获取最终形成的定制化资讯内容展示页面链接地址或其他形式的结果集合。 ```mermaid graph TD; A[数据采集层] --> B(存储管理层); C[HDFS] --- B; D[Kafka] -.-> E(Flume); F(HBase) --- B; G[计算引擎层] -->|依赖|B; H(MapReduce) --- I(SparkStreaming); J[特征工程与算法模块] --> K(MLib); L[A/B 测试]; M[推荐服务接口] --> N(RESTful API); O[Web/Mobile 客户端] -- 请求 -->N; ``` 上述图表展示了如何集成各个组件形成完整的基于Hadoop平台之上的新闻推荐解决方案框架图示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值