(人工智能)基于Lucene与Heritrix的搜索引擎构建(3)
(4) Ajax的工作原理
Ajax的工作原理相当于在用户和服务器之间加了—个中间层,使用户操作与服务器响应异步化。这样把以前的一些服务器负担的工作转嫁到客户端,利于客户端闲置的处理能力来处理,减轻服务器和带宽的负担,从而达到节约ISP的空间及带宽租用成本的目的。
3 系统分析与设计
3.1 系统需求分析
3.1.1 系统架构分析
(1) 系统定位
系统定位为用于网页、影视和图片的搜索。
(2) 系统结构
系统总体包括三大系统模块:网络爬虫、索引建立子系统和用户接口子系统。如图3.1所示。 [版权所有:http://DOC163.com]
图3.1 系统结构图 [资料来源:http://www.doc163.com]
① 网络爬虫的主要任务是从目标源定时抓取信息资源,比如图片、网页等。
② 索引建立子系统主要任务是根据网络爬虫抓取的资源进行分析、正文抽取,利用分词器将提取的资源进行分词、倒排建立索引。
③ 用户接口子系统的主要任务是为用户提供可搜索接口,用户通过web界面输入词条,向服务器发出请求,服务器经过简单处理将处理后的词条传递给搜索器,再以xml格式传给客户端,客户端利用XmlHttpRequest来接受数据,将数据处理显示给用户。
3.1.2 系统用例模型
系统涉及的角色有用户和后台维护人员,用户主要的场景有对想要的信息进行搜索,而后台维护人员的主要场景有抓取资源、维护资源、建立索引、维护索引和维护日志等,以下是对两个角色的部分用例场景的分析:
(1) 详述用例:用户进行影视搜索
主要参与者:用户
相关人员及兴趣:
用户希望系统能很好的理解自己的意思,并能准确快速的返回自己想要的信息。
维护人员希望系统能够运作良好,尽量快速的给出用户解决方案。
前置条件:用户可以与服务器良好连接,服务器状态良好
主要成功场景:
① 用户进入web界面,输入想要搜索的词
② 用户在下拉列表中选择影视 [资料来源:https://www.doc163.com]
③ 用户点击搜索按钮,提交请求
④ 系统进行分析处理,并搜索结果
⑤ 系统返回并显示结果
⑥ 用户退出
扩展:
① 用户没有输入信息
没有错误提示信息,仍然停留在本页面。
② 用户输入空格或制表符
没有错误提示信息,刷新页面。
③ 用户没有选择影视
系统返回当前选择类型的信息。
④ 系统失去连接或崩溃
系统提示连接超时
用户等待系统响应,直到恢复正常
⑤ 系统崩溃
返回错误信息,提示用户系统出现故障,用户退出
(2) 详述用例:后台维护人员建立索引
主要参与者:维护人员
相关人员及其兴趣:
维护人员希望系统能快速方便的完成建立索引任务,并能产生日志,以便维护。
前置条件:维护人员有可利用资源
主要成功场景:
① 维护人员整理可利用资源,打开索引建立子系统
② 维护人员在配置文件中修改资源目录
③ 配置运行时参数后,点击建立索引
④ 系统产生索引文件并产生日志
用例场景已经分析出来,下一个阶段是利用用例画出用例图。这样更加直观显示出参与者与系统的交互流程。用例图如图3.2所示。 [资料来源:Doc163.com]
用例图表述如下:
(1) 用户进行影视搜索用例产生的用例图系统外参与者为用户,系统事件包括用户选取类型,搜索信息和资源链接。
(2) 后台维护人员进行资源抓取用例产生的用例图系统参与者是后台维护人员,系统事件包括定制抓取任务,抓取资源,在抓取资源的过程中涉及到的是外部资源持有者。
(3) 后台维护人员建立索引用例产生的用例图主要参与者为后台维护人员,系统事件包括资源预处理、规范化、噪音过滤、正文抽取、索引建立、日志建立和索引维护。 [资料来源:http://Doc163.com]
图3.2 部分用例语境图
[资料来源:Doc163.com]
详述用例和用例图已经完成分析,接下来是根据用例来画出系统顺序图。系统顺序图将系统视为黑盒,注重的是参与者与系统之间的交互过程,对用例场景进行分析如下:
(1) 用户进行影视搜索用例中用户和SoBa系统其实就是用户和用户接口子系统的交互,主体为用户和接口子系统,系统顺序图如图3.3所示。
图3.3 用户与系统交互的系统顺序图
[资料来源:http://www.doc163.com]
(2) 后台维护人员进行资源抓取用例的主体是后台维护人员和Heritrix爬虫子系统,两者交互过程如图3.4所示。
图3.4 维护人员与网络爬虫交互的系统顺序图
(3) 后台维护人员建立索引用例的主体是后台维护人员和索引建立子系统,两者交互过程如图3.5所示。
图3.5 维护人员与索引建立子系统交互系统顺序图 [来源:http://www.doc163.com]
系统顺序图已经绘制出来,经过分析得出了系统和外部参与者的交互过程,大概的分析出系统应该承担的责任和参与者的责任,在用户和系统之间,用户扮演的角色是把系统当成黑盒来看,只是需要系统给出自己想要的信息,用户的责任只是将词条输入进去,而此时的系统的责任就比较繁忙了,它会首先将信息进行处理,转换成让搜索器认识的词语或单字,这样就可以进行下一项,利用搜索器在索引库中搜索对应的信息,当信息被检索出来,再对结果进行筛选,最后将其放入实体对象封装起来,形成xml格式传给客户端,这就是用户和系统的交互,并对用户和系统内部进行了简单流程分析;在维护人员和系统之间,维护人员责任是建立和维护索引以及日志,对于维护人员的责任就是尽量为系统的进一步工作做准备,并做好维护工作,而系统的责任就是对维护人员选取的资源进行处理、正文抽取、建立索引、维护索引和建立日志。这些是在这个阶段简单分析出来的过程。下一阶段是对以上所有信息进行领域模型抽取。
3.1.3 系统领域模型
对参与者和系统的交互过程进行领域模型抽取,首先是名词概念抽取:Term(词条),TermDisposo(词条处理器),Searcher(搜索器),EntitySet(实体集),IndexStore(索引库),FileSpider(文件蜘蛛),FileFilter(文件过滤器),Entity(实体)等,领域模型图如图3.6和3.7所示。
图3.6 用户接口子系统部分领域模型 [资料来源:http://www.doc163.com]
图3.7 索引建立子系统部分领域模型
3.2 系统概要设计
在需求分析阶段,产生的用例模型和领域模型带入设计阶段,现在可以大概设计系统的构架,如图3.8所示。