版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
)目录PAGE3基于多源异构新闻大数据的信息检索系统设计中文摘要摘要:随着互联网的全方位覆盖以及大数据时代的到来,人类生活的方方面面已经与互联网深度结合,人们的生活已很大程度上离不开互联网了。且浏览近期国内外发生的时事新闻,了解社会动态也成为了互联网用户们的基本日常需求。与此同时,互联网成为了新闻传播的主流媒介,也是如今大众群体最便捷获取新闻信息的主要途径。每天世界上发生的事情数不胜数,由此带来的新闻数据量更是无比庞大。在这样的时代背景下,面对来自于新浪新闻、搜狐新闻、网易新闻等众多不同新闻门户平台的新闻,人们想要准确获取自己更加关注,感兴趣的新闻变得更加困难和低效。因此,需要一个面向主流主流新闻门户网站的信息检索系统来满足不同背景下带有不同目的的用户的查询要求。首先本文介绍当下新闻信息检索系统的一些现状,了解了检索系统的主要组成部分以及相关的实现技术,明确了本系统的需求并选定了技术方案。然后,本文对该系统所采取的技术理论进行了简要介绍,比如Django后端框架、VUE前端框架、ElementUI组件库、Scrapy爬虫框架、倒排索引思想等。接下来,本文对系统进行了详细的需求分析,系统概要设计和详细设计,结合常用UML图对本系统的设计实现工作进行了描述。介绍了系统的整体架构和爬取新闻流程、倒排索引构建流程、搜索流程、相关推荐流程的设计实现。在本系统中,作者参与了需求分析、概要设计、详细设计、独立完成了后端代码的实现。关键词:新闻;爬虫;信息检索目录30106中文摘要 i13567ABSTRACT ii27585目录 iii77671引言 184361.1项目背景及意义 1115681.2国内外研究现状 2252661.3本人工作与论文组织结构 3123421.4本章小结 3183022系统相关技术简介 4256922.1Django后端框架 4325252.2VUE前端框架 5201752.3ElementUI组件库 6258502.4Scrapy爬虫框架 690432.5倒排索引 8292292.6本章小结 86663系统需求分析 9190263.1系统概述 9308153.2系统功能性需求分析 10199783.2.1用户模块 1080073.2.2爬虫模块 1381353.2.3索引模块 14165963.2.4搜索模块 16144513.2.5相关推荐模块 18148363.3系统非功能性需求分析 20210663.4本章小结 21289044系统概要设计 22254954.1系统整体架构 22203864.2关键业务流程设计 23287144.2.1爬取新闻流程设计 2335254.2.2倒排索引构建流程设计 25286184.2.3搜索流程设计 26122664.2.4相关推荐流程设计 27145764.3数据库设计 3035494.3.1数据库表设计 3167904.4本章小结 34327485系统详细设计与实现 35257365.1爬虫模块设计与实现 3549905.2索引模块设计与实现 36242405.3搜索模块设计与实现 36270175.4相关推荐模块设计与实现 37260175.5本章小结 39137346系统测试与验证 40271656.1测试方法 40191546.2功能性测试 40110936.2.1爬虫模块测试 40192246.2.2索引模块测试 4131576.2.3搜索模块测试 41311676.2.4相关推荐模块测试 4297416.3部分界面展示 43275676.4本章小结 456637总结与展望 4628709参考文献 47)正文引言本文围绕着基于多源异构新闻大数据的信息检索系统的设计与实现展开了研究,目的是可以提供一个能够整合众多大型新闻门户网站的新闻资源的检索系统,更加准确高效的满足大众网民日常的新闻浏览需求。本章从项目的背景以及意义,国内外研究现状,作者在项目过程中的主要工作内容和论文的组织结构四个方面进行说明。项目背景及意义在21世纪这个信息科技时代,互联网科技蓬勃兴起。伴随着各行各业与互联网的不断深入结合,互联网的资源愈发的丰富,可以说人们的生活很大程度对互联网资源产生了依赖,疫情期间健康码在全国范围内广泛的使用辅助人们的出行便可以说明这一点。2020年9月,中国互联网信息中心(CNNIC)发布的第46次《中国互联网络发展状况统计报告》[]中提到,截止2020年6月,我国网民规模为9.40亿,互联网普及率达67%,如图1-1所示。图1-1中国网民规模和互联网普及率图由图1-2也可以看出,网络新闻的用户规模也随着网民规模在不断的增加。另一方面,不仅网络新闻用户的规模在扩大,互联网上也出现了越来越多的新闻门户网站,其中体量较大的有腾讯新闻网,网易新闻网,澎湃新闻网,新浪新闻网,搜狐新闻网等。在当今世界的任何一个角落,只要发生了稍具争议并且带有一些热度的时间,与之相关的新闻信息会在不到一天内的时间里通过互联网传遍整个世界。而面对来自这些新闻网中与日俱增的新闻数据量,新闻用户们能够快速获取更贴切自己关注点,满足自身兴趣的新闻变得越来越困难。因此设计与实现一个能够为新闻用户们的新闻搜索需求提供准确的,符合兴趣的搜索结果的面向大型新闻门户网站的新闻信息检索系统具有意义。除此之外,系统所采集的各大网站的新闻数据也会对相关的数据挖掘,自然语言处理等科研工作有所帮助。图1-2网络新闻用户规模及使用率国内外研究现状目前的搜索引擎存在以下问题:大部分引擎按照新闻的相关性或者新闻的发布时间提供给用户,没有综合考虑新闻的特点和用户的关注点。传统引擎对各类信息都进行收集存储而并不仅限于新闻信息,对用户对某一特定主题的需求做的有所欠缺,往往会额外提供一些用户并不期待的无关信息。而在具体的门户网站上浏览新闻,也会有各种各样的广告干扰,给用户的新闻浏览造成一定影响。因此,用户就需要花费更多的时间去对搜索结果进行筛选,这给用户浏览新闻带来了一些其他的时间成本。对于搜索结果,目前的检索系统对结果质量的要求有欠考虑,而是更侧重于检索的返回结果数量。另外在搜索结果信息的概括与归纳分类上做的也稍有欠缺。本人工作与论文组织结构在实现设计该新闻信息检索系统的过程中,作者运用软件项目开发的相关理论知识,始终践行现行较为科学的软件开发流程,独立完成了对项目整体需求分析,技术路线的选择,功能模块的划分。参与完成了用户模块,爬虫模块,索引模块,搜索模块,相关推荐模块五个模块的设计与具体实现还有系统的数据库设计,以及后续对系统进行相应的测试工作。基于作者的有关工作进行了本篇的撰写。本文分为7个章节来对基于多源异构新闻大数据的信息检索系统进行分析介绍,具体结构如下:第一章:引言。该部分主要阐述了项目背景及意义,国内外的研究现状以及本人在该系统实现过程中的主要工作。第二章:系统的相关技术简介。该部分简单介绍的新闻信息检索系统的开发实现中所涉及到的技术框架,包括Django后端框架,Vue前端框架,ElementUI组件库,MongoDB数据库,Scrapy爬虫框架。第三章:系统的需求分析。该部分首先对项目定义进行说明,然后分别从功能性与非功能性两个方面来进行需求分析,并且使用了用例图和用例列表来加以说明。第四章:系统的概要设计。该部分首先介绍整个系统的技术架构,然后对系统中关键的各个功能流程结合流程图进行说明,最后介绍了数据库的设计。第五章:系统的详细设计与实现。该部分按上文的需求分析与各模块的概要设计进一步描述各个功能模块的具体实现。第六章:系统测试与验证。该部分根据系统的需求分析,设计测试用例结合相关测试方法对系统进行测试工作第七章:总结与展望。该部分对全文和整个系统开发实现过程的相关工作进行了总结,并指出其中的有待改善的地方。最后对未来本系统的更新迭代方向提出意见。本章小结本章主要介绍了论文基于的背景及意义,并且分析的国内外的研究现状。然后叙述了作者的主要工作以及整个论文的组织结构。)正文系统相关技术简介本章节主要对基于多源异构新闻大数据的信息检索系统在开发期间所使用到的相关技术框架以及算法作简要介绍。包括所使用的Django后端框架,VUE前端框架,MongoDB数据库,爬取模块使用的Scrapy爬虫框架以及数据结构倒排索引的介绍等。Django后端框架Django是绝大部分Python开发者在进行Web应用开发时首选的重量级开源框架。它可以被用于迅速构建安全性,可维护性高的网站。Django致力于让开发复杂的,由数据库驱动的网站变得更加简单。Django有着"包含一切"的理念,即是创建Web应用所涉及到的通用功能应都被包含在框架中,而不是存在独立的软件包中。在设计思想上,Django依据MVC的架构模式推出了自己的MTV模式。以解耦为核心思想的MVC将Web应用划分为三层。M代表模型Model,在应用中起到与数据库交互的作用即根据相应业务对象与逻辑进行增删改查。V代表视图View,在应用中负责页面与数据的装配即将Html页面反馈给用户。C代表Controller控制器,在应用中负责接收用户的数据请求,并根据请求完成系统中相应的业务逻辑处理,然后调用对应的模型Model和视图View将结果封装通过View返回给用户。MVC的架构如图2-1所示。图2-1MVC架构图而Django的MTV模式在思想上与MVC大致相同,同样有着为了保持各层之间的松耦合关系,但是在其定义上有一些差别。其中,视图View在功能上与MVC的控制器Controller大致相同,都是负责相关的业务逻辑处理以及调用相对应的Model模型与Template。M代表的是模型Model。T代表的是模板Template,模板可以获取视图传递的数据来产生html页面。从MTV架构图中可以看到,Django还多实现了一个URL控制器,主要用于识别URL请求应交由哪一个视图函数来执行相应的业务逻辑处理。MTV架构如图2-2所示:图2-2MTV架构图VUE前端框架用户可以利用Vue.js实现Web得各种交互,它使用户可以通过清晰可见的API来创建UI组件。从技术层面来说,Vue.js基于MVVM模式,聚焦于视图层,以双向数据绑定的方式连接视图和模型。MVVM的本质是通过数据绑定链接视图和模型,以数据的变化来更新视图的变化。在模板的执行过程中,Vue.js会为每一处需要进行动态更新的DOM节点创建一个指令对象。当该对象所指向的数据发生动态变化时,便对绑定的节点进行DOM操作;业务代码只关注模板和数据的变化,而DOM操作都被封装到具体的指令当中,大大提高了开发效率。Vue.js具有轻量级、高性能、组件化、API完善等特性。同时,Vue官方提供了很多实用的开发工具,例如脚手架Vue-cli,可以进行组件式地开发,无需配置,专注应用开。同时为各个组件之间的灵活搭配提供了默认配置。例如前端路由器Vue-router,用来管理请求入口和页面映射关系。它可以对页面进行局部刷新,但不是真正的刷新,而是替换。ElementUI组件库ElementUI是一套基于Vue的在线组件库,帮助开发者快速构建前端网页。和Vue兼容性较高,目前均由此组件库进行搭配开发。该组件基于一致性、反馈、效率、可控的原则开发设计的。Element的优势如下:(1)一致性:具体的开发流程和逻辑表达与现实生活保持一致,遵循用户所习惯的概念和语言;与所有的元素的结构保持一致,包括图标尺寸规格,组件安放位置,滑动窗口的设置等。(2)反馈:实时改变因用户操作而改变的页面,展示改变后的样式和效果,让用户直观的看到自己的操作的影响。(3)效率:操作流程简单,官方网页中有大量的组件,可选择在线插入或下载到本地进行操作,构造的界面简洁,有良好的用户体验。(4)可控:针对不同的使用场景会给用户不同的操作提示以及建议。但保持用户的自主性。Scrapy爬虫框架Scrapy框架是当下较为热门的一个爬虫框架,底层由Python语言实现,被广泛应用在数据挖掘与分析,程序自动化测试等业务场景,具有简易,快速,拓展性强的特点。它致力于帮助用户能够不用关心爬取过程中的调度,异步处理等琐碎的问题而专心实现信息爬取的业务需求,框架内集成了完备强大的功能包括爬取队列调度,分布式,数据库持久化,高性能爬取下载,数据格式解析提取等。用户仅仅需要学习框架的特点以及每个功能模块的简单使用方法,就能够迅速上手以较少的代码满足获取互联网页面资源的需求。主要由五大组件模块来构成Scrapy框架,分别为ScrapyEngine引擎,Scheduler调度器,Donwloader下载器,Spiders爬虫以及最后的ItemPipeline实体管道。各个组件具体负责的功能如下:ScrapyEngine引擎:Scrapy爬虫框架中最重要的核心组件就是引擎,必不可缺。框架由它来对数据和信号在各个组件中的流向。在框架中的作用可类比为计算机中的CPU。Scheduler调度器:调度器是一个爬取请求的优先队列。主要负责将引擎传递过来的Request放入队列中,并在引擎再次请求后将队头请求返回给引擎。Donwloader下载器:下载器是五个组件里负荷最大的组件。它要起到高效下载网页资源的作用,然后将资源反馈给引擎。Spiders爬虫:爬虫组件是需用用户自己去定义业务逻辑的组件。用户需要分析的页面布局格式等内容,从而通过正则表达式,XPath等匹配方法定义出自己的解析规则,包括从页面中解析出所需信息内容以及下一步需要爬取的的页面请求路径。ItemPipeline实体管道:实体管道主要是负责处理Spiders爬虫所获取的数据,经过定义好的操作规格化存入数据库。Scrapy的官网架构如图2-3所示:图2-3Scrapy架构图整体的执行顺序为:第一步,首先引擎会根据定义的初始爬取地址,请求第一个需要爬取的URL。第二步,调度器接收到请求后将URL放入调度队列后,按规则依次将URL出队请求下载。第三步,下载器接收到下载请求后通过URL访问互联网资源,将response返回结果交付回引擎。第四步,引擎得到结果后会把它传递给爬虫组件,爬虫组件根据用户 所定义的提取规则提取好信息或者二级爬取URL后交付回给引擎。第五步,引擎在得到爬虫交付的新请求URL后会回到第二步继续操作,得到交付爬取数据后交由实体管道进行持久化处理。倒排索引在检索信息量比较小的文本信息时,对整个文本进行扫描匹配可以满足需求。但是在数据量比较大的文档库中特别是如今这样一个大数据的时代,如按照传统的索引形式来进行搜索即通过文档Id作为查询Key来查询文档内容Content效率会极其低下,且复杂度较高。但是在日常的搜索需求中,人们都是期望能够输入搜索关键字或词,从而获取对应的文档内容。显然在我们使用检索系统获取我们想要的信息时,显然无法得知具体的文档Id,所以采用这样的索引形式是无法满足人们需求的。随着时代的发展,为了顺应这样的用户搜索需求,倒排索引出现了,它能够记录文档库中分别有哪些词包含了某个字或词。倒排索引是目前各类检索系统中使用的最基本的数据结构,最简单的形式是字或词作为词典项,相关的文档信息作为索引项。即(字或词)->(文档相关信息),其中文档相关信息包括文档id即文档编号,单词在该文档中所出现的次数或者所占权重。使用这样的索引结构能够大大的提升我们的搜索效率。本章小结本章主要介绍了本项目的实现过程中所使用到了一些前端以及后端框架。包括Django后端框架,VUE前端框架,ElementUI组件库,MongoDB数据库,Scrapy爬虫框架。最后介绍了系统实现的关键思想倒排索引的构建。上述的各个框架以及技术在实际应用广泛,因此本系统的实现在技术层面上是可行的。)正文系统需求分析本章节将对新闻信息检索系统进行作较为全面的需求分析。软件开发前最重要的一点就是需求分析。花费大量的精力去开发一个系统,却达不到用户的预期标准,满足不了他们的需求,则可以说整个系统的开发是毫无意义的。本章首先对整个系统做一个整体性的分析,其次根据功能将系统划分为用户模块,爬虫模块,索引模块,搜索模块,相关推荐模块,然后依次对各个模块做功能性的需求分析,最后对系统的非功能性需求进行分析。系统概述本项目是基于Python开发的面向目前主流的新浪,搜狐,网易,腾讯等几个大型新闻门户网站的信息检索系统,系统需要能够做到定时更新采集新闻信息更新数据库,并且能够满足用户的基本新闻搜索需求,并且能够提供搜索新闻的相关推荐功能。本系统参照其功能性需求分析并结合目前信息检索系统的主要构成部分模块,得出本系统应包括一下几个功能模块:用户模块、爬虫模块、索引模块、搜索模块、相关推荐模块。结合上述需求分析所给出的整体功能模块如图3-1所示:图3-1系统整体功能图系统的细化目标如下:系统提供用户模式和游客模式,用户模式能够帮助用户在使用系统的过程中做到新闻搜索日志和新闻浏览日志的管理。系统能够定时的爬取目标新闻门户网站的新闻数据,并且有相应的去重规则避免每日重复爬取。每日新闻定时的爬取结束后需要有相应的日志记录。系统能够在每日新闻定时的新闻爬取结束后,应执行倒排索引构建过程,分词,去除停用词后对词项与新闻文本的相关权重计算,而后更新倒排索引表。系统能够提供关键词搜索,布尔检索功能。且合理的对搜索结果的排序打分,并根据分数返回给用户。系统能够提供相关推荐的功能。首先在进入系统首页,首页应提供近期热点新闻的推荐。用户在进行搜索关键词的输入是,能够做到搜索补全推荐。最后在用户浏览新闻时,能够根据页面信息给出相似新闻推荐功能。系统功能性需求分析本小节根据上述细化目标,分别对用户模块、爬虫模块、索引模块、搜索模块、相关新闻推荐模块进行需求描述。在描述过程中也会结合对应的用例图,用例图标作辅助说明。用户模块图3-2系统用户模块用例图用户模块对应的用例图如图3-2所示,用户模块主要提供系统的用户管理功能,具体包括登录、注册、修改密码、新闻搜索日志和新闻浏览日志管理。且基于用户模式才能在后续的开发迭代中更新个性化的搜索推荐服务。系统也提供游客模式。即使用该模式进行新闻检索不会保存搜索和浏览记录。下面会结合用例表对本模块的各个功能点进行描述。登录功能:表3-1说明了登录功能的使用者和具体用例。表3-1用户登录用例描述用例类型用户用例活动者系统用户用例名称用户登录用例描述此用例描述了用户在使用系统的过程中可选择用户模式进行新闻搜索。优先级中前置条件在系统中注册过合法账号触发当用户点击登录按钮进入登录界面时,将启动该用例。基本事件流活动者操作系统响应步骤1:用户点击登录。步骤3:用户输入账号后登录步骤2:系统响应返回登陆界面;步骤4:系统根据账号信息返回登录结果。异常事件步骤4:数据库中无该用户账号或者密码错误需进行提示。结束页面显示登录成功或登录失败后,此用例结束。业务规则输入的账号密码非空。假设无待解决问题无注册功能:表3-2对用户所需登录的前置需求注册的用例进行了描述。表3-2用户注册用例描述用例类型用户用例活动者系统用户用例名称用户注册用例描述此用例描述了用户在使用系统的过程中的登录功能的前置功能优先级中前置条件无触发当用户点击注册按钮进入注册界面时,将启动该用例。基本事件流活动者操作系统响应步骤1:用户点击注册。步骤3:用户输入预设账号,密码和确认密码后点击确认注册步骤2:系统响应返回注册界面;步骤4:系统根据查询用户表是否有账号重复,进而返回注册结果。表3-2(续)异常事件步骤4:密码和确认密码不一致或者该用户名已被注册时进行错误提示。结束页面显示注册成功后,此用例结束。业务规则注册的用户名和密码须符合要求假设无待解决问题无搜索日志管理:表3-3对用户模式下的搜索日志管理功能进行描述。表3-3搜索日志管理用例描述用例类型用户用例活动者系统用户用例名称搜索日志管理用例描述此用例描述了用户在使用系统进行新闻搜索的过程中,系统能够帮助用户对搜索日志进行管理,包括查看和删除。优先级中前置条件用户已登录触发当用户点击搜索日志管理界面时,将启动该用例。基本事件流活动者操作系统响应步骤1:用户点击搜索日志查看。步骤3:用户可点击查看对应搜索记录的删除按钮步骤2:系统判断是否为登录状态后响应返回搜索日志查看界面;步骤4:系统将记录从数据库中删除并返回异常事件步骤2:用户必须是在登录状态下点击搜索日志管理系统才能够做出相应,否则应提示需要登录才可使用该功能。结束用户点击返回主页后,此用例结束。业务规则无假设无待解决问题无浏览日志管理:表3-4对用户模式下的浏览日志管理功能进行描述。表3-4浏览日志管理用例描述用例类型用户用例活动者系统用户用例名称浏览日志管理用例描述此用例描述了用户在使用系统进行新闻搜索的过程中,系统能够对用户的浏览日志进行管理,包括查看和删除。优先级中前置条件用户已登录触发当用户点击浏览日志管理界面时,将启动该用例。表3-4(续)基本事件流活动者操作系统响应步骤1:用户点击浏览日志查看。步骤3:用户可点击查看对应浏览记录的删除按钮步骤2:系统判断是否为登录状态后响应返回浏览日志查看界面;步骤4:系统将记录从数据库中删除并返回。异常事件步骤2:用户必须是在登录状态下点击搜索日志管理系统才能够做出相应,否则应提示需要登录才可使用该功能。结束用户点击返回主页后,此用例结束。业务规则无假设无待解决问题无爬虫模块作为新闻信息检索系统,最基本也最重要的是就是要有足够的新闻信息。所以爬虫模块在该系统中不可或缺。本系统的爬虫模块应该能够定时的对预设的四个目标新闻门户网站分别有搜狐,腾讯,网易,新浪网进行新闻爬取。通过分析各个新闻网对新闻的网站布局,将新闻信息按照规定的模板抽取后存入数据库。本模块的用例图如图3-3所示。下面会结合用例表进行新闻获取功能进行描述。图3-3系统爬虫模块用例图新闻获取:表3-4对系统的基本功能新闻获取进行描述。表3-5新闻获取用例描述用例类型系统用例活动者系统管理员用例名称新闻获取用例描述此用例描述了系统最基础的功能新闻获取,在系统部署后应能够稳定的保持对目标新闻门户网站的定期爬取。优先级高前置条件无触发当到预设爬取时间,将启动该用例。基本事件流活动者操作系统响应步骤1:爬虫模块启动,按预设网站进行新闻网页下载步骤2:从下载的新闻网页中抽取新闻信息,并按格式交由管道处理步骤3:管道将新闻存储至数据库异常事件步骤1:可能在爬取的过程中会出现网络断开,页面资源不存在等异常。结束门户网站上最新发布的新闻爬取成功后,此用例暂时结束。业务规则爬取的新闻信息应符合定义规范。假设无待解决问题无索引模块索引的构建是目前检索系统中最核心的部分。在检索系统中,采取传统的全文索引方式来构建索引无法高效的对用户的搜索请求做出响应。因此在本系统中,索引模块应能提供为爬虫模块所爬取的新闻构建倒排索引,并且将该索引存储至数据库。倒排索引的顺利构建能够为后续用户的搜索需求提供极大的帮助。其次还需设计出合理的倒排索引结构。这其中需要借助开源的Jieba分词器对新闻进行分词,在之后进行搜索时使用BM25算法对查询输入与目标文档的相关度进行打分排序。索引模块的用例图如图3-4所示。下面会结合用例表对索引模块的功能进行描述。图3-4系统索引模块用例图倒排索引构建:表3-5对系统的核心功能倒排索引构建进行描述。表3-5索引构建用例描述用例类型系统用例活动者系统管理员用例名称倒排索引构建用例描述此用例描述了系统最核心的功能倒排索引的构建优先级高前置条件无触发当定时爬取完成后,将启动该用例。基本事件流活动者操作系统响应步骤1:索引模块启动,首先借助Jieba分词器对所爬取的新闻进行分词。步骤2:将分词结果与停用词表做对比后去除停用词步骤3:对步骤2的分词结果依次对新闻文本计算权值异常事件无结束门户网站上最新发布的新闻爬取成功后,此用例暂时结束。业务规则爬取的新闻信息应符合定义规范。假设无待解决问题无搜索模块搜索模块是检索系统中用户最能够直观感受到的模块。在本模块中提供的功能有关键词检索,布尔检索以及在用户模式下对搜索和浏览的辅助记录。搜索模块的用例图如图3-5所示。下面会结合用例表对该模块所提供的功能进行描述。图3-5系统搜索模块用例图关键词搜索:表3-6对搜索模块所提供的关键词进行描述。布尔搜索与关键词搜索用例相似,不再重复用例描述。表3-6关键词搜索用例描述用例类型用户用例活动者系统用户用例名称关键词搜索用例描述此用例描述了新闻用户最关心的搜索模块所提供的关键词搜索功能优先级高前置条件无触发当用户输入搜索关键词,点击确认搜索后启动用例表3-6(续)基本事件流活动者操作系统响应步骤1:用户输入关键词,选择结果排序方式后点击搜索步骤5:用户可根据返回结果选择查看新闻或访问新闻原链接步骤2:系统接收到查询请求后首先对查询进行分词。步骤3:分词得到所有查询次后,根据停用词表去除停用词。步骤3:分从数据库中读取词项对应的倒排索引记录,计算对应文档的BM25分数。步骤4:根据用户选择的排序方式,返回排序结果。异常事件步骤3:若数据库中无对应词项无法得到搜索结果应提示用户。结束查询结果返回后,该用例结束。业务规则无假设无待解决问题无搜索与浏览记录:表3-7对搜索模块中提供的辅助记录功能进行描述,包括搜索记录和浏览记录。表3-7搜索与浏览用例描述用例类型用户用例活动者系统用户用例名称搜索与浏览记录用例描述此用例描述了新闻用户在使用检索系统的过程中,系统能够对用户的搜索和浏览进行日志记录优先级中前置条件无触发当用户对关键词点击搜索或者在搜索结果中点击查看新闻时启动用例基本事件流活动者操作系统响应步骤1:用户点击搜索关键词或点击新闻查看步骤2:系统接收到查询请求或查看请求,执行相应的操作。步骤3:系统判断当前是否为用户登录状态,若为登录状态则将日志记录步骤4:系统在执行完相应的操作后根据用户id进行记录插入。表3-7(续)异常事件无结束搜索记录或浏览记录插入成功后用例结束业务规则无假设无待解决问题无相关推荐模块相关推荐模块主要给用户提供首页热点新闻推荐,搜索补全推荐以及相似新闻推荐。首页热点新闻推荐是在用户在进入到系统主页时,主页应对数据库中的新闻进行一个热度排序,根据新闻的评论人数和参与人数决定。搜索补全推荐是在用户输入搜索关键词是对目前查询输入进行一个相似补全推荐。相似新闻推荐是在用户具体浏览某条新闻时,根据当前浏览的新闻选择库存中与之较为相似的几篇新闻进行推荐阅读。该模块的用例图如图3-6所示。下面会结合用例表对该模块所提供的功能进行描述。图3-6系统相关推荐模块用例图首页热点新闻推荐:表3-8对相关推荐模块中提供的首页热点新闻推荐功能进行用例描述。表3-8首页热点新闻推荐用例描述用例类型用户用例活动者系统用户用例名称首页热点新闻推荐表3-8(续)用例描述此用例描述了新闻用户在初次进入系统首页时,系统将会按照预设的热点规则给出当前新闻库中的前10条热点新闻。优先级中前置条件无触发当用户使用系统,进入首页时触发此用例基本事件流活动者操作系统响应步骤1:用户进入系统首页步骤2:系统接收请求后计算新闻热度值步骤3:将计算结果排序,将前10条通过json格式传输到首页。异常事件无结束请求首页响应返回后用例结束业务规则无假设无待解决问题无搜索补全推荐:表3-9对相关推荐模块中提供的搜索补全推荐功能进行用例描述。表3-9搜索补全推荐用例描述用例类型用户用例活动者系统用户用例名称搜索补全推荐用例描述此用例描述了新闻用户在输入查询语句时,系统能够根据当前语句给出补全推荐。优先级中前置条件无触发当用户在输入栏输入查询语句触发用例基本事件流活动者操作系统响应步骤1:用户输入查询语句步骤4:用户可以选择推荐词进行搜索或直接对输入语句进行搜索步骤2:系统接受到查询字符串进行热词库搜索步骤3:系统找到以该词开头的词语,返回得分前8的词语构成补全推荐。步骤5:系统转入执行搜索用例异常事件步骤3:若当前热词库中找不到查询的词,则将查询词放入热词库中进行更新。结束查询结果返回后,该用例结束。业务规则无表3-9(续)假设无待解决问题无相似新闻推荐:表3-10对相关推荐模块中提供的相似新闻推荐功能进行用例描述。表3-10相似新闻推荐用例描述用例类型用户用例活动者系统用户用例名称相似新闻推荐用例描述此用例描述了新闻用户在使用系统对具体的新闻浏览时,会根据当前浏览的新闻给出数据库中与之相似的新闻推荐。优先级中前置条件无触发当用户对关键词点击搜索或者在搜索结果中点击查看新闻时启动用例基本事件流活动者操作系统响应步骤1:用户点击具体的新闻查看步骤2:系统接收到执行相应的操作。步骤3:系统找出对应的新闻信息步骤4:系统根据该新闻信息转化成向量形式步骤5:系统对每篇新闻进行处理计算两新闻之间的相似度,将结果排序返回前5条作为相似新闻推荐异常事件无结束结果返回后用例结束业务规则无假设无待解决问题无系统非功能性需求分析在系统开发前,我们需要对系统进行详细的功能性需求分析和非功能性需求分析。本系统的非功能性需求主要包括新闻信息的格式定义,索引结构信息的定义,新闻爬取的效率,有效处理异常检测等。系统的实现上首先要满足功能性需求,但是以用户体验的角度来看类似性能,速度,可交互性等非功能性需求会有更深的印象。本系统需要是一个具有时效性、健壮性、易用性、准确性、可维护性、可拓展性的新闻检索系统。具体分析如下:时效性。众所周知,信息具有时效性。而新闻信息作为其中的一种,时效性显得尤为重要。新闻的热度往往上升的很快,下降也很快。用户查看新闻显然是想查看当下发生的热点新闻,而不是过去的热点报道。所以本系统在满足基本的新闻爬取采集要求后还要保证对新闻资源的采集效率,这一点对用户体验以及整个系统的质量至关重要。健壮性。不论什么系统,健壮性或者说是系统可靠性都是一个最基本的要求。试想若系统在运行过程中常因为不知名原因而崩溃,长此以往系统的用户量必然大大减少。易用性。易用性指的是新用户在首次使用系统时,能够在短时间内就能够对系统的使用有一个准确的认知。因此界面设计需要合理简洁,同时界面的设计还需要符合人们的使用习惯,这对系统能否吸引用户起到很大作用。准确性。本系统在满足搜索的基本功能实现后,需要考虑搜索结果准确率的非功能性需求。若大部分搜索结果都与用户的基本预期差距较大,则系统在准确性方面还需要提高。因此应该采取相应措施或者算法,尽可能的提高结果的准确性。可维护性和可拓展性。在维护性上,系统在开发阶段需要考虑到后期的维护成本。功能模块的划分要合理,代码书写需符合规范。尽最大可能降低后期的维护成本,需要做到系统在出现问题后能够快速定位系统中的漏洞并修复。在可拓展性上,因为本系统为检索系统,最重要的模块就是爬虫模块。而爬虫模块中的对网页信息解析的部分可能会随着网页布局的变化需要做出相应的更改。并且在后续能够添加面向其他新闻门户网站等新功能,且不影响当下系统的运行。本章小结本章节对该新闻信息检索系统进行了需求分析。通过分析检索系统的主要构成,并且考虑到用户的基本搜索需求,得出了系统应具备的功能。根据该分析将整个系统划分为用户模块,爬虫模块,索引模块,搜索模块,相关推荐模块,并且对各个模块所具备的功能进行了用例分析。最后从时效性、健壮性、易用性、准确性、可维护性、可拓展性六个角度对系统的非功能性需求分析作了说明,对系统的质量目标做出了要求。)正文系统概要设计本章节对该新闻信息检索系统进行概要设计的说明。首先对本系统的一个整体架构并结合架构图进行介绍,以前端后端各自独自开发的思想可将系统分为展示层、业务逻辑层、数据层。接下来根据第三章的需求分析对本系统在业务逻辑层涉及到的关键业务逻辑结合流程图进行概要设计的说明。最后通过E-R图对本系统的数据库作设计说明。系统整体架构图4-1系统整体架构图系统的整体架构图如图4-1所示,本新闻信息检索系统也采用了当下流行的前后端各自开发的解耦方式,前端与后端各自开发,相互约定好相关的数据传输格式。前端使用到了Vue框架,对用户的操作做出响应并根据需求向Django后端发送服务请求。首先用户在浏览器通过vue进行与系统的交互,服务器后端接收到相关的请求后返回页面,在经过浏览器的页面渲染后再通过ajax异步传输发送数据请求,服务器根据请求内容返回相应的数据以及请求状态码。本系统根据MVC架构的思想可展示层,业务逻辑层,数据层。其中的展示层使用到了vue渐进式框架,并且配合ElementUI组件搭建了用户与系统进行交互的展示界面。业务逻辑层主要包括系统的功能模块,其中核心模块为爬虫模块、索引模块、搜索模块、相关推荐模块。最后数据层采用的MongoDB数据库,主要用于存储本系统最主要且格式较为灵活,内容多的新闻数据。关键业务流程设计本小节主要对本系统中设计到的关键业务流程进行设计说明,包括爬取新闻流程设计,倒排索引构建流程设计,搜索流程设计,相关推荐流程设计。且使用流程图对各个步骤辅助说明。爬取新闻流程设计图4-2网易新闻爬取示意图在爬取新闻流程中,系统目前仅对网易新闻网、新浪新闻网、腾讯新闻网、搜狐新闻网进行新闻的爬取。在本系统中采用宽度优先也称广度优先的策略,即按照树的层次往下进行搜索爬取。以网易新闻爬取过程为例,爬取示意图如图4-2所示。在Scrapy子模块中创建对应的爬虫程序,定义起始爬取的Request路径以及对应需要爬取的新闻板块,根据板块中的html页面结构抽取出之后每条新闻的详情路由加入爬取调度队列,最后根据定义的新闻Item项进行新闻的信息提取和存储。Scrapy中采用Xpath方法从html网页中提取数据。Xpath时XML路径语言,是一种用于确认XML文档中某部分位置的语言。Xpath根据XML的树状结构,能够在数据结构树中寻找到我们所需的节点。常用的路径表达式如下:表4-1Xpath常用路径表达式表达式描述Nodename选取此节点的所有子节点。m/从根节点选取。//从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置。s.选取当前节点。..选取当前节点的父节点。@选取属性。图4-3新闻爬取流程图爬取新闻流程图如图4-3所示,在爬取过程中需要注意礼貌性原则,避免访问速率过快。爬虫模块的请求速度应当根据网页的响应速度动态调整。当目标网页响应延迟较大时说明采集的新闻网站负载较大,应当降低爬虫的请求速度。倒排索引构建流程设计在倒排索引构建过程中,系统需要根据爬取新闻过程所得出的新闻数据进行构建。构建索引的方式采用内存式单遍扫描索引构建算法即SPIMI。算法的伪代码如图4-4所示。图4-4SPIMI伪代码示意图在该算法中有可分为三个关键步骤:分词。给定一篇新闻,比如:中国科学院大学今年招收340名本科生。在这句话中我们就需要分出“中国”“科学”“中国科学院大学”“招收”“本科生”等词语。在本系统中,使用了开源的Jieba中文分词组件的搜索引擎分词模式来辅助完成。停用词去除。将新闻进行分词后,需要对分词结果进行筛选过滤,去除停用词。停用词指的是“的”“地”等语气助词,这些词在意义上对新闻信息的区分以及相关度上并不能起到关键作用,所以我们需要将这些词汇在结果中去除。为了避免搜索过程中时间较长,在构建索引时就计算对应文档中的单词权重IDF值。存储。将新闻分词结束后,我们需要将所得到得词典以及倒排索引表存入数据库中。倒排索引构建过程的流程图如图4-5所示。图4-5倒排索引构建流程图搜索流程设计搜索模块支持布尔搜索和关键词搜索两种方式。用户首先给出查询输入,系统接收到用户的输入后对查询进行分词操作,得到所有的查询词项,根据停用词表去除停用词。然后数据库中读出对应词项的倒排索引记录,对相应的新闻文本进行BM25分数计算。最后根据用户指定的排序方式返回排序结果,排序方式支持时间排序、相关度排序、热度排序。检索模型采用检索效果相对较好的BM25模型,即给定一个查询Query和一篇新闻文档Document,可以根据如下公式对该文档计算得分。(4-1)式中,qtf指的是查询Q中的词频。tf指的是文档中的词频。指的是文档长度。avg_l指的是平均文档长度。N指的是文档数量,df指的是文档频率。k1,k3和b为调优参数,都取正值。其中k1主要对文档中的词项频率作缩放控制,k3则对查询语句中的词项频率作缩放控制。b则表示考虑文档长度的情况下对词项权重的一个缩放控制。查询过程的流程图如图4-6所示。图4-6查询过程流程图相关推荐流程设计在相关推荐模块中,有首页热点新闻推荐、查询补全推荐、相似新闻推荐三个推荐功能。在用户首次进入系统首页中,就能够看到当前10个热点新闻推荐。热点的排序回根据新闻的评论人数和点击人数决定,并且按照时间来排序,将排序结果的前10条新闻返回给用户首页。首页热点推荐流程图如图4-7所示。图4-7首页热点推荐流程图其次在用户进行查询输入时,系统能够给到查询的补全推荐。查询补全时根据新闻文档信息即频率较高的词项,初步构建一个热词库,每个词都有相应的热度。然后根据用户的前端输入返回的查询字符串对词库进行搜索,找到以该查询词开头的词语,返回得分前8的热词作为补齐词语。如果词库中没有查询的词,则将查询词放入热词库中进行更新,否则将热词库中的该词语热度增加。查询补全推荐流程图如图4-8所示。图4-8查询补全推荐流程图最后是相似新闻推荐。因为每篇新闻都可以通过一个向量形式来数学化表达,通过计算不同新闻向量之间的余弦相似度,则可以比较出不同新闻之间的相似性。在用户选择查看某条新闻后,对新闻进行向量形式的构建。前文提到的Jieba分词组件提供了关键词提取功能,直接返回关键词的TF-IDF值并且排序。对每篇新闻进行分词处理后,取每篇新闻的前25个词项的TF-IDF值构成新闻的向量表示。然后计算两个新闻向量之间的余弦相似性,将最相似的5篇新闻作为新闻推荐结果返回给用户。相似新闻推荐的流程图如图4-9所示。图4-9相似新闻推荐流程图数据库设计因为本系统的主要数据为多个来源,结构格式并不一定统一的新闻数据,所以在本新闻信息检索系统中主要使用了MongoDB数据库。MongoDB数据库主要用于存储字段较为灵活的文档型数据,可用于存储关系型数据和非关系性数据,是一个兼容性与灵活性较高的数据库。因为非关系性数据库的表结构设计较为灵活,所以本部分介绍将以关系型数据库的方式进行介绍。数据库的设计工作主要分为两部分:深入理解对系统各模块的划分,抽取实体概念以及实体之间的相互关系,从而定义出数据库表之间的逻辑结构,并且用E-R图进行辅助设计。通过所画出的E-R图,详细定义每张表的物理结构,包括字段名,字段类型,名称,备注以及用途等。数据库表设计本系统数据库共包含七张表,分别是用户表、查询记录表、新闻浏览记录表、新闻表、评论表、倒排索引表、新闻分词表。其中用户表、查询记录表、新闻浏览记录表属于用户模块,系统支持游客模式和用户模式。系统数据库的E-R图如图4-10,图4-11所示。图4-10数据库E-R图图4-11数据库E-R图以上七张表的具体结构设计如下:用户表。用户表保存本系统用户的信息,方便为用户保留搜索记录和浏览记录,为后期系统进行推荐功能的拓展奠定基础。具体信息包括用户名和密码。具体表结构如表4-2所示。表4-2用户表表字段名称字段类型备注userId用户idVarchar非空passWord密码Varchar非空查询记录表。查询记录表用于保存用户模式下,用户使用本系统所进行的搜索语句记录,和查询时间记录。如当前为游客模式则不进行记录。具体表结构如表4-3所示。表4-3查询记录表表字段名称字段类型备注query查询语句Varchar非空queryTime查询时间Date非空userId用户idVarchar外键新闻浏览记录表。新闻浏览表用于保存用户模式下,用户使用本系统查看具体的新闻时进行辅助记录,记录所浏览新闻的url和浏览时间。如当前为游客模式则不进行记录。具体表结构如表4-4所示。表4-4新闻浏览记录表表字段名称字段类型备注newsUrl新闻urlVarchar非空newsId新闻idVarchar非空browseTime浏览时间Date非空userId用户idVarchar外键(4)新闻表。新闻表用于存储爬虫模块对所爬取的新闻信息进行存储,为整个系统提供数据来源,且后续的索引模块、搜索模块、相关推荐模块提供基础。具体表结构如表4-5所示。表4-5新闻表表字段名称字段类型备注newsId新闻IdVarchar非空publishTime发布时间Date非空newsUrl新闻urlVarchar非空表4-5(续)表字段名称字段类型备注newsSource新闻来源Varchar非空newsAuthor新闻作者VarcharnewsTag新闻标签VarcharnewsCoverUrl新闻封面图urlVarchar非空newsTitle新闻标题Varchar非空newsContent新闻内容Varchar非空newsType新闻类别Int非空newsClick新闻点击量Int非空(5)评论表。评论表用于存储所爬取的对应新闻下的评论信息。具体表结构如表4-6所示。表4-6评论表表字段名称字段类型备注newsId新闻IdVarchar外键comment评论内容Varchar非空time评论时间Date非空(6)倒排索引表。倒排索引表用于存储新闻信息所得出的倒排索引,包括词项、对应的新闻Id、词项在本文中的TF-IDF值还有关键词权重。具体表结构如表4-7所示。表4-7倒排索引表表字段名称字段类型备注keyId词Idvarchar外键newsId新闻Idvarchar外键tfIdfTF-IDF值Double非空weight关键词权重Double非空(7)分词表。分词表用于存储所有新闻信息进行分词得到的所有词信息,包括词Id和关键词。具体表结构如表4-8所示。表4-8分词表表字段名称字段类型备注keyId词IdVarchar非空key关键词Varchar非空本章小结本章主要对该新闻信息检索系统作概要设计的介绍。首先对系统的整体架构进行分析,系统可按MVC的思想拆分成展示层,业务逻辑层,数据层。展示层主要涉及系统与用户的交互界面原型设计。在业务逻辑层中,对本系统的几个关键业务流程结合流程图进行了详细介绍,确定了系统在关键业务中的具体业务逻辑。最后在数据层的设计中,对信息检索系统所需要使用到的数据库进行了设计,并且结合E-R图进行说明。)正文系统详细设计与实现本章节在第四章概要设计的基础上,对本新闻信息检索系统的爬虫模块、索引模块、搜索模块、相关推荐模块四个关键模块进行详细的设计与实现。将结合时序图以及文字叙述来对系统的工作流进行详细叙述。爬虫模块设计与实现爬虫模块的新闻定时爬取功能主要使用基于Python的Scrapy框架来实现。爬取新闻过程的时序图如图5-1所示。图5-1新闻爬取时序图以爬取网易新闻为例详细介绍爬取的实现,在到达预定的爬取时间后,系统会通过wangyi_spider.py下的start_request(self)方法将网易新闻网的目标板块url拼接好放入队列后,在通过parse_news_list(self,response)方法依次对每个板块的新闻url进行抽取加入待处理队列,该方法还可通过Xpath方法解析html数据,抽取出新闻的title标题,url链接,type类别,click点击量,tag关键词标签以及评论数并且定义好新闻id,因为网易布局中新闻列表信息是js异步加载的,所以需要在Scrapy框架中的下载器中间件middlewares.py中的process_response(self,request,response,spider)中使用python的selenium自动模拟点击工具包来替换响应返回体,进而通过response获取新闻信息列表。接下来通过parse_news_content(self,response)方法对每个新闻详情页的具体新闻信息进行提取,抽取出新闻的正文content和来源source,以及异步加载的评论信息的获取路径,并将之加入待处理队列。最后通过parse_comment(self,response)方法对评论信息的提取。最后交由pipelines.py下的process_item(self,item,spider)进行信息的持久化存储。索引模块设计与实现索引模块的功能是对爬虫模块所爬取的新闻做倒排索引的构建。使用SPIMI算法进行实现,具体的流程前文已阐述过。本系统中通过index_module.py下的construct_postings_lists(self)进行具体算法的实现,使用jieba分词工具的全文搜索引擎模式对每条新闻进行分词,得到分词list后调用clean_list(self)方法做到停用词去除。并且计算各词对应的文档权重,生成倒排索引记录。最后调用write_postings_to_db(self)方法将倒排索引数据持久化存储。倒排索引构建的时序图如图5-2所示。图5-2倒排索引构建时序图搜索模块设计与实现搜索模块的功能主要是对用户在前端进行的查询输入进行响应。用户在前端输入查询语句后,系统后端通过view.py中的search方法获取到用户所提交的数据获得用户输入的查询语句,随后调用parse_query.py中的parse_query(self,line)方法将查询语句进行分词返回后将查询词传递给engine.py中的search(self,query)方法进行倒排索引表的查询,获得含查询词的文档编号集合,然后根据用户选定的排序方式分别选择调用result_by_BM25(self,sentence)、result_by_time(self,sentence)、result_by_hot(self,sentence)进行相关度,时间,热度的排序。其中热度的得分计算考虑了BM25的得分,新闻的发布时间,新闻的评论人数以及新闻的点击量,最后将查询的排序结果返回给用户。搜索过程的时序图如图5-3所示。图5-3新闻搜索过程时序图相关推荐模块设计与实现相关推荐模块中的首页热点新闻推荐功能是在用户进入系统首页后,调用view.py中的suggest_hot()方法读取数据库中的新闻信息,根据新闻的评论人数以及新闻的点击数进行排序,最后根据时间进行排序将排序结果的前8条新闻信息通过json格式返回给前端,做到热点新闻推荐的功能。首页热点希望推荐的时序图如图5-4所示。图5-4首页热点新闻推荐时序图相关推荐模块中的搜索补全推荐功能是用户在进行查询语句的输入过程中,系统会读取前端当前搜索输入栏中的内容,调用view.py中的key_suggest()方法查询系统热词库中以当前内容为开头的查询词。将查询结果的前8作为补全推荐返回给前端用户。搜索补全推荐的时序图如图5-5所示。图5-5搜索补全推荐时序图相关推荐模块中的相似新闻推荐功能是用户在点击进入新闻详情页查看新闻的过程中,系统会调用view.py中的simidoc(id)方法,将当前正在查看的新闻信息通过get_k_nearest()方法,通过向量化表示和余弦相似度的计算,得出与当前所查看新闻相似度得分前5的新闻作为推荐新闻返回给用户。相似新闻推荐的时序图如图5-6所示。图5-6相似新闻推荐时序图本章小结本章节依据第四章概要设计的内容,对系统的具体代码实现细节进行了详细的描述,并且通过时序图的辅助手段来对系统的爬虫模块、索引模块、搜索模块、相关推荐模块进行针对性的介绍。系统测试与验证软件测试指的是在预设的限定条件下,对程序进行一些操作,通过程序的响应是否符合预期找出程序中目前存在的缺陷并且修复,据此对软件的整体质量进行评估。这个过程是中软件开发流程中所必不可少的一个过程。其目的是有效地检测软件系统是否符合需求的规定,确认预期结果和实际结果的偏差,评估实际成果是否投入使用。测试方法本系统的测试工作主要采取的是黑盒测试的方法。测试程序中的每个接口能否在预设的输入下给出正确的输出,根据系统的功能进行对应的功能性测试并设计测试用例。保证系统功能能够符合预期,并且健壮性和稳定性较强。功能性测试爬虫模块测试爬虫模块主要测试系统能否正常的定时爬取新闻网的新闻,是否能够对爬取的新闻及进行有效的存储以即日志记录。表6-1为爬虫模块测试用例。表6-1爬虫模块测试用例用例编号1用例名称爬虫模块测试测试人xxx前置条件定时脚本正常运行。测试步骤1.系统开发人员运行定时启动爬虫脚本。2.预定时间查看系统数据库是否由新闻爬取。预期结果1.系统在预定时间,能够定时爬取网易等新闻网的新闻数据。2.数据库中新闻数据存储成功,有爬取日志。实际结果与预期一致索引模块测试索引模块主要测试系统能否在新闻爬取结束后,对新爬取的新闻数据进行倒排索引的构建并存入数据库。表6-2为索引模块测试用例。表6-2索引模块测试用例用例编号2用例名称索引模块测试测试人xxx前置条件定时新闻爬取正常结束。测试步骤1.系统开发人员运行定时启动爬虫脚本。2.查看倒排索引表以及分词表中是否有新增记录预期结果1.系统能在新闻爬取结束后正常进行倒排索引的构建2.数据库中倒排索引数据存储成功实际结果与预期一致搜索模块测试搜索模块主要测试系统能否在用户在输入查询语句,选择排序方式提交查询后给出正确的响应。表6-3为索引模块测试用例。表6-3搜索模块测试用例用例编号3用例名称搜索模块测试测试人xxx前置条件系统正常运行测试步骤1.用户输入查询语句-北京2.用户选择排序方式3.提交查询预期结果1.系统前后端数据连通正常2.系统后端在接收到查询请求时,在3s内给出正确响应3.前端能查看新闻搜索结果实际结果与预期一致相关推荐模块测试相关推荐模块测试主要有三个功能测试,分别为首页热点新闻推荐测试,搜索补全推荐测试,相似新闻推荐测试。其中首页热点新闻推荐测试主要测试系统能在用户进入首页时给出正确响应,显示当前的热点新闻。表6-4为首页热点新闻推荐测试用例。表6-4首页热点新闻推荐测试用例用例编号4用例名称首页热点新闻推荐测试测试人xxx前置条件系统正常
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 酒店员工酒店安全管理制度
- 市场调研数据提交延误催办函5篇
- 户外探险活动安全规范手册
- 健身爱好者力量训练方法训练效果提升路径方法策略指南
- 健身房会员管理系统渠道整合与数据分析指引手册
- 造纸印刷工艺流程中的环保优化方案
- 能源行业安全工程师考核指标表
- 产品运输协调处理函4篇范本
- 企业员工培训资源优化指导书
- 油烟净化设备运行全流程指南
- 企业职工养老保险知识
- 运动素质知到课后答案智慧树章节测试答案2025年春浙江大学
- 广东省中山市七校联考2024-2025学年八年级上学期期中考试数学试卷(人教版)(含解析)
- 图纸保密协议
- 计算机组成原理(第6版)课件全套 纪禄平 第0-6章 概论-输入输出设备及其接口
- 江苏省苏州市昆山、太仓、常熟、张家港四市2024-2025学年八年级上学期期末阳光测试历史试题(含答案)
- 七年级上册生物学期中复习必背知识点(人教版2024新教材)
- 焦油渣提纯扩建项目环境影响报告书
- 2024版科研项目合作协议书
- DL-T5024-2020电力工程地基处理技术规程
- 建筑地基处理技术规范DBJ-T 15-38-2019
评论
0/150
提交评论