基于Lucene的全文搜索引擎设计_第1页
基于Lucene的全文搜索引擎设计_第2页
基于Lucene的全文搜索引擎设计_第3页
基于Lucene的全文搜索引擎设计_第4页
基于Lucene的全文搜索引擎设计_第5页
免费预览已结束,剩余29页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精选文档基于Lucene的搜索引擎作者姓名:王旭 专业班级:2010050704 指导教师:涂德志摘要 从1994年至今,万维网经过了二十年的飞速发展,当前的万维网数据规模到底有多大无从估量。随着网络信息资源的急剧增长,现如今,信息已经不再是一种稀缺的资源,我们的注意力反而变得稀缺了。人们越来越多地关注如何快速有效地从海量的网络信息中,抽取出潜在的、有价值的信息,使之有效地在管理和决策中发挥作用。搜索引擎提供了一种便捷的获取网络信息的途径,只要你能在电脑上打字,那么你就能通过“输入关键字+自行浏览”的用户交互方式快速查找到自己感兴趣的资源。目前Web搜索引擎(Search Engine) 技术正成为计算机科学界和信息产业界争相研究、开发的对象。 搜索引擎是指互联网上一种提供用户查询的一类应用。通过人工目录整理或者是网络爬虫收集互联网上已经存在的网页,在用户输入查询词后,将相关网页迅速展现给用户。用户自行浏览后选择最合适期望的链接,进入查看。关键词:网络信息资源 Web搜索引擎 查询ABSTRACTSince 1994, the World Wide Web after two decades of rapid development, how much the current size of the World Wide Web is incalculable. With the rapid growth of network information resources, nowadays, the information is no longer a scarce resource, however,our attention became scarce . more and more concerned about how quickly and efficiently from the vast amounts of network information, to extract potentially valuable information to effectively play a role in the management and decision-making. Search engines provide a convenient way to obtain network information, as long as you can type on a computer, then you can through the mode: keywords + browse ,to quickly find the resources you are interested. Currently Web search engine (Search Engine) technology is becoming the target computer science and information industry compete on development.Search engine on the Internet refers to a method of providing a user queries a class of applications. Sorting through artificial catalog or web crawlers to collect Web pages on the Internet already exist, after the user enters the query words, the relevant pages quickly presented to the user. Choose the most appropriate link , browse the desired post into view.Keywords: Network Information Resources Web Search Engine Consult目录第1章 前 言11.1 搜索引擎的学术背景与实际意义11.2 国内外文献综述21.3 课题来源及主要研究内容2第2章 相关技术介绍42.1 JSP与Tomcat42.2 SQL Sever数据库42.3 Ajax简介52.4 Lucene介绍5第3章 搜索引擎原理83.1 搜索引擎体系结构83.2 搜索引擎主要模块功能介绍93.2.1 搜索器 (Crawler)103.2.2 索引器 (Indexer)113.2.3 检索器(Searcher)123.2.4 用户接口(UserInterface)12第4章 系统分析134.1 需求分析134.2 系统可行性分析134.2.1 社会可行性分析134.2.2 技术可行性分析144.2.3 经济可行性分析14第5章 总体设计155.1 系统构架155.1.1 索引建立子系统165.1.2 用户接口子系统165.2 数据库设计165.3 实现环境配置18第6章 详细设计196.1 建立索引196.2 文件搜索实现196.3 数据库搜索实现216.4 后台数据编辑实现22第7章 系统测试247.1 测试重要性247.2 测试用例25结 论27致 谢28参考文献29精选文档第1章 前 言1.1 搜索引擎的学术背景与实际意义万维网是互联网最主要的组成部分,也是人们获取网络信息的最主要的来源。1994年,蒂姆伯纳斯李创立万维网联盟(World Wide Web Consortium,),在万维网的整体构架中,通用资源标识符、超文本标记语言和超文本传输协议这三个元素是万维网的核心,缺一不可。再随后的几十年当中,由于万维网的开放性和其上信息广泛的可访问性,不出意料的成为了互联网的霸主。目前,是以网页为主的互联网时代,以Web网页为对象的搜索引擎检索系统相继产生了,搜索引擎成为人们上网找寻信息的重要手段,搜索引擎的产生,使得人们能够快速的从互联网找到与自己需求相关的网页链接。人工智能、数据挖掘的进一步研究以及现在网页的特性使得搜索引擎技术进一步发展,在搜索后,甚至还有意料之外的收获。2008年,Google在其官方博客上称,仅其页面搜索量就已经高达1万亿个网页,而且现在互联网上的网页数每天都有数以万计的数量增长。Yahoo是出现最早的目录式搜索引擎, 全文搜索引擎Google的出现得到了广大网民的认可,并迅速占领了全球市场,到现今国内的如Baidu、新浪爱问、腾讯搜搜、Sogou等,搜索引擎的品牌愈来愈多,服务也越来越丰富。同时,伴随着Web2.0的普及,网络信息的膨胀速度呈指数急速增长,各种各样的网站都需要为其加入检索功能,以满足用户的需要。另外,在企业级应用的市场上,全文信息检索的需求也一直在增加,各种文档处理、内容管理软件都需要键入全文检索的功能。目前,搜索引擎已经不仅仅是采集网页中已经存在的信息并提供给用户访问的工具,它正朝着组建一个大的社区方向发展。Google是目前不可争议的第一大搜索引擎,在这个社区里你可以浏览新闻、地图查看、浏览新闻、收发邮件、翻译你想要翻译的外文文献以及搜索你想要浏览的网页等等。另外,如大家比较熟悉的百度,相继开发的百度百科、百度知道、百度贴吧、百度文库等一系列的社区功能,也吸引了大量用户。搜索引擎构建的社区正在慢慢的融入人们的生活与学习。1.2 国内外文献综述搜索引擎,又称搜索机,Web搜索器,是伴随WWW网络出现的检索网上信息资源的新工具,实质上是一种网页网址检索系统。根据查询方式的不同,搜索引擎也有不同的分类,它们有的提供分类和关键词检索途径,有的仅提供关键词检索途径。提供关键词检索是通过主要由Crawler、Spider、Worm、Robot等计算机软件程序不停地、尽可能广的在互联网上漫游,搜索到网页,然后自动给网页上的某些或全部字符做上索引,形成目标摘要格式文件以及网络可访问的数据库,供人们检索网络信息的检索工具。网络目录则是和搜索引擎完全不同,它没有不停的为收集信息而工作的“网络蜘蛛”,而是由专业人员谨慎地选择网站的首页,并将其放入自己网站相应的分类类目中,因此,这种模式下,大多数的网页是不能被访问到的。网络目录中的分类网站是人工整理的,网页质量高,但其跟新速度慢,有限的覆盖范围使得用户还是跟倾向与使用后者。到目前,成功的搜索引擎系统也很多,如Yahoo,Google,baidu等。从最开始的人工目录分类,到关键词检索,全文检索,搜索引擎的发展。搜索引擎能够实现的功能也多样化。除了传统的从互联网上收集网页信息,各大引擎还加入了自己独特的功能。包括如Google翻译,地图,百度文库,百度贴吧等。除了各大搜索引擎大佬,还有众多的搜索引擎活跃在互联网舞台上。目前,搜索引擎市场上流行的是不分用户对象的搜索引擎,独辟蹊径,开发针对特殊群体的搜索引擎,近几年也笼络了不少的用户。如针对儿童的美国ASK网站网站编辑团队组织开发的。同样的,也有面向老人的,病人的一系列的搜索引擎。1.3 课题来源及主要研究内容课题来自于指导老师意见,几经思考,最终由本人自拟。到现在,B/S结构的应用已经占据了软件开发中的大半江山,从大一学C+,到QT“退伍”,再到学习Java Web开发,通过几年的努力,基本掌握了Web开发技术。同时,对于互联网上大量页面的检索及结果排序也产生了浓厚的兴趣。此次课题类型为应用软件开发,一个基于Lucene全文检索引擎工具包的搜索引擎。根据自己在校期间多次实践开发经验,采用MyEclipse集成开发环境,SQL Sever2005数据库。它具有以下特点:支持桌面文件搜索,格式包括txt、doc、xls和ppt;支持分词查询;支持全文搜索;能够高亮显示搜索关键字;显示查询所用的时间;显示搜索历史、过滤关键字。第2章 相关技术介绍2.1 JSP与Tomcat HTMl页面时静态页面,写好后,由浏览器执行。HTML语法不支持动态显示,及在HTMl页面中,不能访问数据库和对数据加工处理。随着网页类型的多元化,现如今,单纯的静态网页已经不能满足用户的需求。HTML不能处理访问数据库数据,Java代码却能访问数据库。在HTML代码中混入Java代码的一种技术就是JSP(Java Sever Pages)。JSP页面的Java代码在服务器端执行,执行生成HTML页面返回给客户端。因此,在一个采用JSP技术的项目中,服务器的选择也是必须的。Tomcat是Sun的JSWDK(Java Server Web Development Kit)中的Servlet容器,由Apache、Sun和其他一些公司和个人共同开发而成。Tomcat既是一个开放源码、免费支持JSP和Servlet技术的容器,同时又是一个Web服务器软件,受到了Sun公司的大力推荐和支持。因此,Servlet和JSP的最新规范都可以在Tomcat的新版本中得到实现。Tomcat是一个小型的轻量级应用服务器,运行时占用系统资源少、扩展性好、支持负载平衡与邮件服务器等开发应用系统中的常用功能,并且不断改进和改善。先进的技术、稳定的性能、源码开放和免费获取的机制,使得Tomcat深受Java爱好者的喜爱并得到许多开发商的认可,曾为目前相当流行的Web应用服务器。2.2 SQL Sever数据库 Microsoft SQL Server 2005 是一个全面的数据库平台,使用集成的商业智能 (BI)工具提供了企业级的数据管理。Microsoft SQL Server 2005数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,可以构建和管理用于业务的高可用和高性能的数据应用程序。2.3 Ajax简介Ajax是一种Web应用客户端技术,它结合了JavaScript、CSS、HTML、XMLHttpRequest对象和文档对象模型(DOM)等多种技术。它允许把用户和Web页面间的交互与Web浏览器和服务器间的通信分开来。在传统的Web应用中,用户提交表单实际上就是向服务器发送一个请求,服务器接受数据并处理,最终返回一个新的网页。如果传输的数据量比较大,用户能够明显的看到在页面上显示的效果就是,整个页面都将刷新一次,在刷新的过程中,用户只能等待,而这,无疑是一项很不好的用户体验。在Ajax技术中,当提交表单时,数据首先被转交给Ajax引擎的中间层,然后由中间层负责发送给服务器端程序,处理完成后,再将相应发回给Ajax引擎的中间层,并通过Ajax引擎的中间层将数据返回给客户端界面显示出来。如此,充分利用了客户端闲置的处理能力,减轻服务器负担,节省带宽,也提高了用户体验。2.4 Lucene介绍 Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构。Lucene结构和源码组织结构如图2-1:图2-1 Lucene结构和源码组织结构Lucene的核心工包括7个子包,每个包完成特定的功能。最基本的是索引管理和检索管理。往Lucene中放的是文档,查询的是词,查询返回的也是文档。索引是信息检索引擎工作的第一步,只有建立了索引才能进行信息检索。Lucene用Document逻辑文件和Field域来组织各种数据源。Document向Lucene提供原始的要索引的文本内容,Lucene从Document中取出相关的数据源,并根据属性配置进行相应的处理,建立索引。索引过程如下:(1)创建一个IndexWriter用来写索引文件,它有几个参数,INDEX_DIR就是索引文件所存放的位置,Analyzer便是用来对文档进行词法分析和语言处理的。(2)创建一个Document代表我们要索引的文档。(3)将不同的Field加入到文档中。我们知道,一篇文档有多种信息,如题目,作者,修改时间,内容等,不同类型的信息用不同的Field来表示。(4)IndexWriter调用函数addDocument将索引写到索引文件夹中。Lucene建立了功能强大的索引机制为搜索服务,这是因为在检索系统的使用中,用户体验最深的还是搜索部分。如果这一部分的性能无法达到用户要求,那么软件就没有太大的意义。搜索过程如下:(1)IndexReader将磁盘上的索引信息读入到内存,INDEX_DIR就是索引文件存放的位置。(2)创建IndexSearcher准备进行搜索。(3)创建Analyer用来对查询语句进行词法分析和语言处理。(4)创建QueryParser用来对查询语句进行语法分析。(5)QueryParser调用parser进行语法分析,形成查询语法树,放到Query中。(6)IndexSearcher调用search对查询语法树Query进行搜索,得到查询结果存放在TopScoreDocCollector。由于Lucene自带的分词器对英文的分词效果较好,但对中文的分词效果并不如意。为了使检索系统能更好的处理中文信息,本文采用了IK Analyzer作为分词器。IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。第3章 搜索引擎原理3.1 搜索引擎体系结构根据百度百科的定义,体系结构包括一组部件及部件之间的联系。对于搜索引擎而言,其体系结构是指为搜索引擎运行而设置的软硬件系统,以及软硬件系统之间相互联系的总和。为了容纳万维网以爆炸式增长的数据,各大搜索引擎都是用规模浩繁的计算机集群系统对这些大量的数据加以存储和处理。如图3-1所示的Google在美国俄勒岗达拉斯附近的数据中心,有图可以看出,整个数据中心由3个巨大的集群机房组成,其中每个机房占地面积都超过一个标准足球场的大小。图3-1 美国俄勒岗达拉斯附近的数据中心搜索引擎按其工作方式主要可分为三种,分别是全文搜索引擎(Full Text Search Engine)、目录索引类搜索引擎(Search Index/Directory)和元搜索引擎(Meta Search Engine)。全文搜索引擎最具代表性的如Google,国内的有百度,搜搜等。全文搜索引擎是真正的搜索引擎,简单的操作方式,广泛的搜索范围,始一出现就得到了广大网名的认可,并在很大程度上取代了目录式索引类网站。目录索引算是互联网上出现的最早的索引,大名鼎鼎的Yahoo雅虎便是其中之一,国内的搜狐、新浪、网易搜索也都属于这一类。目录索引虽然有搜索功能,但在严格意义上算不上是真正的搜索引擎。网络信息日新月异的变更,人们总是期望挑出最新的信息,人工的组织连接分类既不能在覆盖度上满足用户搜索需求,也使得互联网的信息与现实信息之间存在一定时间差。元搜索引擎在接受用户查询请求时,同时在其他多个引擎上进行搜索,并将结果返回给用户。中文元搜索引擎中具代表性的有搜星搜索引擎。在搜索结果排列方面,有的直接按来源引擎排列搜索结果,有的则按自定的规则将结果重新排列组合。3.2 搜索引擎主要模块功能介绍图3-2 搜索引擎基本组成 如图3-2所示,搜索器(Crawler)、索引器(Indexer)、检索器 (Searcher)和用户接口(Ul)等四个部分组成了一个完整的的搜索引擎程序,页面存储器 (Repository)和存储桶 (Barrel)两部分组成存储设备。 3.2.1 搜索器 (Crawler) 搜索器的功能是在互联网中漫游,及时、高效地收集数量尽可能多的有用的Web网页,以及建立他们之间的超链接关系。它在整个搜索引擎系统中承担着与互联网数据进行交互的任务。搜索器的主要功能就是漫游整个互联网,以一个超链接为起始点,尽可能广和深的遍历网页上的其它连接,存储找到的新的网页,和跟新已经存在的文档内容。目前有搜集信息的策略: 深度优先算法是搜索引擎发展早期广泛采取的一种信息收集策略,这种算法的优点就是能够尽可能多的遍历到互联网上的所有信息。广度优先策略与深度优先策略类似,只是前者是以网页中的一个连接为起点,尽量多的网下漫游,广度优先则是遍历网页中的所有超链接再网下漫游。然而,互联网上很多的网页在很多时候都不是被大量用户所访问的,一味最求可访问量并不能带来很好的用户体验。目前的商用搜索引擎中,还包括反向链接数策略、局部PageRank策略、网页的重访策略等。 搜索器的实现常常用分布式、并行计算技术,以提高信息发现和更新的速度。商业搜索引擎的信息发现可以达到每天几百万网页。 然而我们知道,不同类型的网络数据,其更新频率有很大的差距。更新频率很高的,跟新周期以分钟甚至秒来计算,如:新闻网站,天气情况股票指数等。跟新频率相对比较高的,几个小时到几天不等周期的,例如大家的博客,空间,以及学校公共主页等。面对差异如此大的更新频率,对每一个网页采取同样的更新策略无疑会浪费大量的资源,甚至不能保持搜索引擎数据与万维网数据的同步。为此,搜索引擎往往采用不同的抓取更新频率的方法,保证数据集合总体的新鲜度维持在一个较高水平。3.2.2 索引器 (Indexer) 搜索器搜索到的海量数据,搜索引擎如何管理这些海量的数据?索引器的主要功能就是对海量的网页内容,从中抽取出索引项,用于表示文档以及生成文档库的索引表,实现快速查找包含用户关键字的网页。搜索引擎的索引实际上就是一种单词-文档数据结构。倒排索引是搜索引擎最常用的单词到文档的一种实现方式。在搜索引擎内部,会为每个文档和单词(关键字)赋予一个唯一的ID,在倒排表中,实际存储的就是单词编号和文档编号。索引表也要记录索引项在文档中出现的位置,以便检索器计算索引项之间的相邻或接近关系 (proximity)。 如表3-1。表3-1 倒排索引结构图Term1Doc11 Pos1Doc11 Pos2Doc11 PosqDoc12 Pos1Term2Doc2 Pos1Doc21 Pos2Doc21 PosqDoc22 Pos1.TermDocN1 Pos1DocN1 PosN.DocN1 PosqDocN2 Pos1Termi表示一个词项,i表示词项的编号。Docij表示一个文档,也就是一个文档,对应的上下标j、i表示包含第i个词项的第j个文档。Pos表示词项在对应文档中第k次出现的位置信息。3.2.3 检索器(Searcher) 检索器的功能是根据用户的查询,对将要输出的结果进行排序。检索结果的排序依据主要包括页面内容的相似程度、网页质量评估、用户偏好情况等。检索器的主要任务就是通过文本信息检索模型来计算用户输入查询词与系统索引页面的内容相关程度,语言模型是搜索引擎文本信息检索模型中最常用的一种。对网页进行排序,只考虑页面的内容相关程度是不够的,网页数据的质量也影响排序结果,一般来说,权威性比较高的网站更能得到搜索引擎的青睐。现如今的商用搜索引擎更能够根据的用户的搜索习惯给出相应的排序结果,获得更好的用户体验。 3.2.4 用户接口(UserInterface) 打开搜索引擎引用,首先看到的便是简洁的用户接口界面。用户接口的作用是输入用户查询、显示查询结果、提供用户相关性反馈机制。主要的目的是方便用户使用搜索引擎,高效率、多方式地从搜索引擎中得到有效、及时的信息。用户接口的设计直接关系到用户的切身感受,是用户心理、地方习惯、行业传统的一个具体体现,良好的界面设计往往能够为你带来更多的用户。第4章 系统分析4.1 需求分析互联网上的资源越来越多,高效、快捷的从互联网上查找需要的资源对于无论是在工作还是生活中都变得举足轻重。通过对搜索引擎以及结合Lucene自身的特定,制定本次设计需要实现的功能,开发个基于Lucene的搜索引擎,它具有一下特点: 支持桌面文件搜索,格式包括txt、doc、xls和ppt; 支持分词查询 支持全文搜索 能够高亮显示搜索关键字 显示查询所用的时间 显示搜索历史、过滤关键字其中分词和全文搜索都可以结合Lucene提供的类库以及相关算法实现,而关键字高亮度显示只需要借助Highlighter的帮助,通过数据库持久化保存数据。4.2 系统可行性分析可行性作为整个项目中的第一步,涉及很多方面,以确定项目开发是否有意义,是否可以在规定时间内完成项目开发。4.2.1 社会可行性分析互联网的迅速发展,当前,每天新增加的网页都是一个巨大的数字。当前的搜索引擎只能抓取、捕捉一小部分的网页,这就是所谓的“visible”或“indexable”。 大量的科学知识和其他有价值的信息被挡在门后(未被搜索引擎的爬虫网络访问到)。 显而易见,不可见和深度网页的数量是先可搜索的网页大小的数倍大。而且网页内容的质量亦变得良莠不齐,没有保证。所以,未来搜索引擎的高速发展将持续保持。4.2.2 技术可行性分析 Lucene是一套用于全文检索和搜寻的开源程式库,能够做全文索引和搜寻,在Java开发环境里Lucene是一个成熟的免费开源工具。MyEclipse开发平台也提供了强大的集成功能,能够在上面集成最新版本的JDK环境,和配置Tomcat服务器。再结合大学几年所学习的软件工程方面的知识,对多种参考资料的查阅,对搜索引擎技术的了解,以及指导老师的帮助,在这些前提下,本应用的技术可行性是通过的。4.2.3 经济可行性分析 如前文所述,搜索引擎已经成为了人们生活的一部分,现如今,通过互联网上网的人,几乎没有不用到搜索引擎的。在信息量越来越大的今天,各大网站也几乎都有自己的搜索栏,如果搜索引擎能够更多更有效的抓取网站内容,那么对于网站的好处是不言而喻的。第5章 总体设计5.1 系统构架系统的大概设计构架,如图5-1所示:图5-1 系统总体架构以下是对架构设计的叙述:5.1.1 索引建立子系统要设计索引建立子系统,必须要了解索引建立过程,领域模型中已经可以看出此子系统的大概框架。网络爬虫从互联网上获得大量的文档,索引程序将这些大量的数据进行压缩,从中抽取出索引项,建立单词-文档数据模型。索引建立是本系统的核心,良好的索引子系统创建直接关系到搜索结果内容排序和搜索时间的多少。5.1.2 用户接口子系统用户接口子系统是主要与用户进行交互的部分,也是搜索引擎中用户能够唯一在视觉上感受到的一部分。Ajax的异步提交,实现局部数据传输,返回用户需要的的数据,节省了用户的等待时间,也大大降低了服务器和客户端交互量、节省带宽。5.2 数据库设计合理的数据库设计可以提升业务逻辑的处理,提高软件效率,并且对利于以后的功能模块拓展。根据上章的功能设计,不难给出合理的数据库设计。在本系统中,存在两个实体,用户和管理员。管理员能够登陆实现对数据库中已存在条目的修改。为了简化系统,并没有设计单独的用户表。以下是数据库中所有表的信息。数据库快速搜索, 由于Luence只能对文本内容进行切分词检索,数据库数据搜索首先需要建立索引, 在文档建立索引之后,就可以开始对其进行搜索。表5-1 数据库容器表(content)列名数据类型允许空IdintTitlenvarchar(50)contentnvarchar(1000)Linkvarchar(500)文件搜索首先需在系统设置一个搜索文件夹,然后把待搜索的文件放到该文件夹下面,接着输入关键字即可搜索。表5-2 文件表(tb_Filter)列名数据类型允许空IDintkeyWordnvarchar(50)系统还能够显示搜索历史和管理员特殊权限操作,因此,相应的由搜索历史表(search_his)和用户表(Users)。表5-3 搜索历史表(search_his)列名数据类型允许空IDintkeyWordnvarchar(50)SearchTimedatetime表5-4 搜索历史表(Users)列名数据类型允许空IDintLoginIDnvarchar(50)Pwdnvarchar(50)5.3 实现环境配置本系统的设计借助了开源的Lucene程序库,为了能够很好的实现中文分词,还导入了IKAnalyzer包。如图5-2所示,系统导入的包图。图 5-2系统导入的包图第6章 详细设计6.1 建立索引Lucene对数据的检索是在索引文件中查找的,可能会有人问为什么不直接在数据中检索呢?在数据库数据中实现分词是一件很困难的事情,如果数据量小只有几百几千倒是可以考虑用数据库检索,党数据量足够大时,每次数据库中数据取出显然是不可能的。把数据从数据库里读取出来,写入索引文件的时候是一条一条记录的写入的。Lucene能够为文本类型的数据建立索引,所以你只要能把你要索引的数据格式转化的文本的,Lucene就能对你的文档进行索引和搜索。实现代码: 图6-1 建立索引6.2 文件搜索实现文件搜索首先需在系统设置一个搜索文件夹,然后把待搜索的文件放到该文件夹下面,接着输入关键字即可搜索,本系统目前支持搜索的文件格式包括.txt、.doc、.xls和.ppt。在文件搜索之前需要建立索引,在建立索引的时候对性能影响最大的地方就是在将索引写入文件的时候, 所以在具体应用的时候就需要对此加以控制.在读取文件夹下的文件时,我们是通过FileInputStream对象来读取文件的,该对象需要一个参数,即文件的路径,通过使用FileInputStream读取文件后,我们还需要通过BufferedReader对象把文件转换成Buffered形式存放,最后我们通过IndexSearcher对象来实现文件的搜索:实现代码:图6-2 文件搜索图6-3 文件搜索效果图6.3 数据库搜索实现本模块实现了数据库快速搜索,跟文件搜索一样,数据库数据搜索首先也需要建立索引, 在文档建立索引之后,就可以开始对其进行搜索。这时,由用户提交一个关键字检索请求,请求将被分析,然后利用文本操作进行处理。最后将请求送到后台,并返回搜索到的信息并显示在前台页面:图6-4 数据库搜索效果图6.4 后台数据编辑实现管理员可以点击页面的“后台登录”链接到管理员登录页面,用户在登录页面输入账号和密码即可登录系统,登录后用户可以看到目前系统所有数据,同时也可以修改或者删除任何一条数据可以通过标题来搜索自己想看的数据,也可以通过添加按钮来添加新的数据:图6-5 后台数据编辑效果图 第7章 系统测试7.1 测试重要性系统开发过程中,测试时一项必不可少的工作,测试几乎伴随着整个开发的生命周期。一个完整的测试用例不是指未能发现系统中的任何问题,而是在测试时找到漏洞并在之后良好解决。如图6-1所示是本次设计系统的测试流程图:测试数据程序期望结果测试结果错误信息改正信息纠错评价测试图7-1 测试流程图按照软件工程的观点,软件测试包括代码编写阶段的单元测试,在软件初步完工后的集成测试和确认测试,以及最后的系统测试。单元测试单元测试集成测试确认测试系统测试单元测试模块模块模块测试报告软件设计信息模块测试报告测试报告软件需求信息系统的其他成分可运行的系统测试报告验收阶段测试阶段图7-2 层次测试的信息流程图1.单元测试。单元测试是在软件开发过程中要进行的最低级别的测试活动,单元测试由开发者自己完成,意在测试该单元是否按期望值完成单元功能。2.集成测试和确认测试。软件有多个单元模块组成,各模块之间也存在着数据的传输和处理,因此仅有单元测试时不够的。集成测试和确认测试就是为了防止单个模块的功能是否会对另一个模块的功能产生不利的影响,各个子功能组合起来,能否达到预期要求的父功能,全局数据结构是否有问题,单个模块的误差累积起来,是否会放大,从而达到不能接受的程度等问题。3.系统测试。系统测试是针对整个产品系统进行的测试,往往是功能上的测试,检测系统是否能按照需求分析的功能要求一一实现。7.2 测试用例为检测本系统是否能够正常工作,产生了如下的测试用例。的输入关键字“在”,进行搜索,搜索的结果如图7-3所示,可见搜索结果是正确的,并且关键字都已高亮度显示。 图7-3 测试用例结果图 结 论通过测试,此次设计实现了搜索引擎的基本功能,能够从海量的数据中找到与查询相关的内容。通过分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论