搜索引擎的设计与实现分析研究计算机科学与技术专业

上传人:文*** 文档编号:241315829 上传时间:2024-06-17 格式:DOC 页数:26 大小:1.04MB
返回 下载 相关 举报
搜索引擎的设计与实现分析研究计算机科学与技术专业_第1页
第1页 / 共26页
搜索引擎的设计与实现分析研究计算机科学与技术专业_第2页
第2页 / 共26页
搜索引擎的设计与实现分析研究计算机科学与技术专业_第3页
第3页 / 共26页
点击查看更多>>
资源描述
摘要随着互联网的快速发展,网络上的数据也随着爆炸式地增长。如何最快速筛选出对我们有用的信息成了主要问题。搜索引擎是指根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统。搜索引擎已经成为互联网不可缺少的工具,可以帮助人们更快的找到所要的内容和信息。提高做事的效率,使互联网资源高效的利用。本文主要介绍了搜索引擎是从指定的Web页面中按照超链接进行采集、解析,并把解析出来的每条数据后加入数据库。用户可以通过客户端发送搜索请求,Web服务端对数据进行筛选、排序,最后展示到客户端。对信息的采集主要采用了HTML解析技术、通过迭代解析的方式不断采集数据。搜索引擎的整体构架了采用了MVC设计模型,采用了JSP技术和Struts2技术,用关键词匹配算法筛选结果,搜索结果匹配度良好。初步完成了搜索引擎的主要功能。关键词:搜索,数据库,JSP,Struts2AbstractWith the rapid development of the Internet, the data on the network with explosive growth. How to quickly screen out most of our useful information became the main problem. Search engines is according to a certain strategy, using specific computer program information from the Internet. In the information organization and processed, to provide users with retrieval service,show the result to user. Search engine has become an indispensable tool of the Internet, can help people faster to find the content and information,and improve the efficiency of work, make the Internet resources efficient use.This article mainly introduced the search engine from the specified Web page links according to the collection, analysis, and add the data whitch analytic by service to the database. The user can through the client sends the search request, web server for data screening, sort, finally thow to client. For the collection of the information of the mainly adopts HTML analytical technology, through the iterative analytical way to collect data continuously. The search engines overall frame based on the MVC design model,use JSP technology and struts2 technology. Use keywords matching algorithm screening results, search results matching degree is good. Initially completed the search engines function.Keywords: search, database, JSP, struts2目录摘要2Abstract3第一章绪论5第一节课题研究的目的和意义5第二节搜索引擎的现状与前景5一、搜索引擎的现状:5二、搜索引擎的前景:6第二章需求分析6第一节开发背景6第二节系统功能6一、功能划分6二、功能描述6第三节相关技术及工具简介7一、HTML语言简介7二、JavaScript语言简介7三、JSP简介8四、Web开发轻平台Tomcat简介8五、MYSQL数据库简介8第三章系统设计9第一节系统整体架构9第二节系统模块设计10一、数据采集模块10二、搜索引擎模块11第三节数据库设计11第四章系统实现13第一节数据采集13一、解析数据的实现13第二节搜索引擎的实现16第三节数据访问层的实现19第五章系统测试20第一节系统测试的必要性20一、单元测试20二、集成测试21三、验收测试21第二节采集数据模块的测试21第三节搜索引擎的测试22结束语24致谢25参考文献26第一章 绪论第一节 课题研究的目的和意义搜索引擎,通常指的是收集了互联网上几千万到几十亿个网页并对网页中的每一个文字(即关键词)进行索引,建立索引数据库的全文搜索引擎。当用户查找某个关键词的时候,所有在页面内容中包含了该关键词的网页都将作为搜索结果被搜出来。在经过复杂的算法进行排序后,这些结果将按照与搜索关键词的相关度高低,依次排列。随着信息化的发展,越来越多的人通过搜索引擎来寻找自己所需要的东西,用户在搜索引擎中输入某一关键词的时候,会有成千上万甚至百万千万上亿的结果,那么在茫茫的信息海洋中我们如何才能让用户找到我们网站上相关的内容呢?互联网的信息如浩瀚的海洋一样,如何在这个无边无际的海洋找出对用户最有用的信息就是搜索引擎的主要作用。搜索引擎,往往是大多数用户进入互联网的入口。搜索引擎的出现,整合了众多网站信息,恰恰起到了信息导航的作用。通用搜索引擎就如同互联网第一次出现的门户网站一样,大量的信息整合导航,极快的查询,将所有网站上的信息整理在一个平台上供网民使用,于是信息的价值第一次普遍的被众多商家认可,迅速成为互联网中最有价值的领域。搜索引擎的便捷使其成为互联网最受欢迎的应用之一。以至于有相当多的人将浏览器的默认首页设为搜索引擎,甚至形成了将网站名称输入到搜索框中而非浏览器地址栏这样独特的网络导航习惯。总的来说,搜索引擎直接改变了人们的网络习惯,人们进入网络第一个想到的就是搜索引擎。网络化就是信息化,在网络化的今天、信息爆炸式增长的今天。研究搜索引擎具有重要而深远的意义。第二节 搜索引擎的现状与前景一、 搜索引擎的现状: 自1990年,加拿大麦吉尔大学(University of McGill)计算机学院的师生开发出Archie,成为意义上的第一个搜索引擎开始,搜索引擎发展迅速,越来越贴近人们的需求。目前主流的搜索引擎主要有:Google搜索、百度搜索、搜狗搜索。Google搜索拥有的数据库是几大搜索引擎中最大的。因此,Google的搜索结果往往比别的引擎更多。它尽量把与关键词有关的页面都呈现给搜索者,广泛,但缺乏精度。由于Google的数据库有很多来自blog网站,同时也有很多blogger搜索Google,因此Google很重视对blog网站资料的索引,搜索结果中往往含有比其它网站更多的blog信息。百度搜索一直以开发最符合中国人使用习惯的搜索引擎为己任,经过不断的努力和坚持不懈,百度搜索引擎已成为中国最强大的中文搜索引擎。采用的核心技术:超链分析超链分析技术,是新一代搜索引擎的关键技术,现在已为世界各大搜索引擎普遍采用,百度总裁李彦宏就是超链分析专利的唯一持有人。在学术界,一篇论文被引用得越多就说明其越好,学术价值就越高。超链分析就是通过分析链接网站的多少来评价被链接的网站质量,这保证了用户在百度搜索时,越受用户欢迎的内容排名越靠前。搜狗搜索是由国内著名的门户网站搜狐SOHU.COM运作的,搜狐是国内最早提供搜索服务的站点。互联网概念在国内的普及,搜狐功不可没。在2001年年初由CNAZ(中文网站评估认证网)举办的搜索引擎网络专项功能排名调查中,搜狐名列第一。二、 搜索引擎的前景:搜索引擎是人们使用最多的网络工具,人们使用的越多的同时对它的要求就越高,现在的搜索引擎已经不能满足人们搜索的需要了。据国际数据公司(IDC)曾公布的一份报告表明,被大肆宣传为“使用简便易用,搜索结果丰富”的搜索引擎技术正在被信息更集中的局域网取代,因为大多数搜索系统的表现与用户的期望值相差太大,诸如数据量高速增长的视频、音频等多媒体信息的检索,现在仍然是无法突破的难题。对多媒体内容的处理尚不成熟,有的搜索引擎不支持动态网页。人们期望引擎不仅能挑出自己需要的文章,还能挑出自己所关心的图片、视频、音乐等。如何解决这些难题已成为第三代搜索引擎探索的方向。一个好的搜索引擎不再仅凭借数据库大小、更新频率、检索速度、对多语言的支持这几个基本特性来衡量,随着数据库容量的不断膨胀,如何从庞大的资料库中精确地找到正确的资料,被公认为是下一代搜索技术的竞争要点。第二章 需求分析第一节 开发背景而随着新闻技术的飞速发展,特别是因特网应用的迅速普及,网站越来越多,并且每天全球互联网网页数目以千万级的数量增加。要在浩瀚的网络新闻中寻找所需要的材料无异于大海捞针。网页是因特网的最重要组成部分,也是人们获取网络信息的最主要来源,为了方便人们在大量繁杂的网页中寻找出自己需要的信息,搜索引擎就应运而生了。搜索引擎是人们网上购物、看电影、看小说、看图片等网络使用中的第一个首选入口。其重要性不言而喻。互联网的海量信息,让人眼花缭乱,如果在短时间内没有找到用户想要的信息,不仅影响用户的心情,而且影响用户的工作效率。所以搜索引擎最核心也是最重要的是对关键字的匹配程度。匹配程度越高得到的结果越贴近用户的需求,也越得到用户的青睐。目前的搜索引擎可分为三类:一是全文搜索引擎,它是从互联网提取各个网站的信息(以网页文字为主),建立起数据库,并能检索与用户查询条件相匹配的记录,按一定的排列顺序返回结果。二是目录索引,它是按目录分类的网站链接列表而已,用户完全可以按照分类目录找到所需要的信息,不依靠关键词进行查询。三是元搜索引擎,他先是接受用户查询请求后,同时在多个搜索引擎上搜索,并将结果返回给用户。第二节 系统功能一、 功能划分主要功能包括:数据采集、数据保存、数据排序、搜索引擎、前台显示。二、 功能描述(一) 数据采集对指定链接的网页中的所有的超连接进行采集,然后对没一条超链接进行进一步的解析,按一定的规则把超链接的网页的内容采集出来。(二) 数据保存把采集到的数据保存到数据库。数据的主要内容包括:网页标题、作者、内容、发表时间、链接地址。(三) 数据排序对符合搜索条件的数据进行排序,排序规则是关键字的匹配和网页的发表时间。(四) 搜索引擎首先响应用户的HTTP请求,获取搜索关键字;然后查询数据库里面匹配关键字的数据,把符合条件的数据提取出来,存到一个临时表中;最后查询临时表的数据并排序,返回数据。(五) 前台显示获取从服务器返回的数据,按照一定的规则显示在最后的显示页面。第三节 相关技术及工具简介一、 HTML语言简介HTML(Hyper Text Markup Language 超文本标记语言)是一种用来制作超文本文档的简单标记语言。用HTML编写的超文本文档称为HTML文档,它能独立于各种操作系统平台(如UNIX,WINDOWS等)。自1990年以来HTML就一直被用作World Wide Web上的信息表示语言,用于描述Homepage的格式设计和它与WWW上其它Homepage的连结信息。HTML文档(即Homepage的源文件)是一个放置了标记的ASCII文本文件,通常它带有.html或.htm的文件扩展名。生成一个HTML文档主要有以下三种途径:(一) 手工直接编写手工直接编写(例如用你所喜爱的ASCII文本编辑器或其它HTML的编辑工具)。(二) 格式转换通过某些格式转换工具将现有的其它格式文档(如WORD文档)转换成HTML文档。(三) 服务器生成由Web服务器(或称HTTP 服务器)一方实时动态地生成。HTML语言是通过利用各种标记(tags)来标识文档的结构以及标识超链(Hyperlink)的信息。虽然HTML语言描述了文档的结构格式,但并不能精确地定义文档信息必须如何显示和排列,而只是建议Web浏览器(如Mosiac,Netscape等)应该如何显示和排列这些信息,最终在用户面前的显示结果取决于Web浏览器本身的显示风格及其对标记的解释能力。这就是为什么同一文档在不同的浏览器中展示的效果会不一样。二、 JavaScript语言简介JavaScript 是一种新的描述语言,它是介于HTML和Java高级语言之间的一种语言,它更接近于高级语言,但易学,功能稍弱。此语言可以被嵌入 HTML 的文件之中,它是一种通用的、基于原型的、面向对象的脚本语言。它不占用很多系统和网络资源的情况下提供一种可以插入到不同的应用程序的通用代码。透过JavaScript可以做到回应使用者的需求事件 (如: form 的输入) 而不用任何的网路来回传输资料,所以当一位使用者输入一项资料时,它不用经过传给服务器端 (server) 处理,再传回来的过程,而直接可以被客户端 (client) 的应用程式所处理。其中JavaScript与Java的区别在于: (1) JavaScript是解释性的语言,当程序执行的时候,浏览器一边解释一边执行。而Java是一种编译型的语言,必须通过JDK的编译,在Java虚拟机上运行。(2) 代码格式不一样,Java的代码经过JDK编译后成为二进制的以.class作为扩展名的文件,而JavaScript是纯文本的文件。(3) 在HTML中嵌入的方式不一样。Java可以通过Applet嵌入HTML中,而JavaScript是直接写入其中。三、 JSP简介JSP(JavaServer Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标记(tag),就构成了JSP网页(*.jsp)。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。程序片段可以操作数据库、重新定向网页以及发送 email 等等,这就是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求最低,可以实现无Plugin,无ActiveX,无Java Applet,甚至无Frame。四、 Web开发轻平台Tomcat简介Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现。与传统的桌面应用程序不同,Tomcat中的应用程序是一个WAR(Web Archive)文件。WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织:通常其根目录下包含有Html和Jsp文件或者包含这两种文件的目录,另外还会有一个WEB-INF目录,这个目录很重要。通常在WEB-INF目录下有一个web.xml文件和一个classes目录,web.xml是这个应用的配置文件,而classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean)。通常这些所依赖的类也可以打包成JAR放到WEB-INF下的lib目录下,当然也可以放到系统的CLASSPATH中,但那样移植和管理起来不方便。 在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。你在浏览器中访问这个应用的Jsp时,通常第一次会很慢,因为Tomcat要将Jsp转化为Servlet文件,然后编译。编译以后,访问将会很快。另外Tomcat也提供了一个应用:manager,访问这个应用需要用户名和密码,用户名和密码存储在一个xml文件中。通过这个应用,辅助于Ftp,你可以在远程通过Web部署和撤销应用。当然本地也可以。五、 MYSQL数据库简介MySql是一个快速、多线程、多用户的SQL数据库服务器,具有功能强,使用简单,管理方便,运行速度快,可靠性高,安全保密等特点。其出现虽然只有短短的数年时间,但凭借着“开放源代码”的东风,它从众多的数据库中脱颖而出,成为PHP的首选数据库。除了因为几乎是免费的这点之外,支持正规的SQL查询语言和采用多种数据类型,能对数据进行各种详细的查询等都是PHP选择MySql的主要原因。以下是MySql数据库的主要特征。 (1) MySQL的核心程序采用完全的多线程编程。线程是轻量级的进程,它可以灵活地为用户提供服务,而不过多的系统资源。用多线程和C语言实现的MySQL能很容易充分利用CPU。 (2) MySQL可运行在不同的操作系统下。简单地说,MySQL可以支持Windows95/98/NT/2000以及UNIX、Linux和SUN OS等多种操作系统平台。这意味着在一个操作系统中实现的应用可以很方便地移植到其他的操作系统下。 (3) MySQL有一个非常灵活而且安全的权限和口令系统。当客户与MySQL服务器连接时,他们之间所有的口令传送被加密,而且MySQL支持主机认证。 (4) MySQL支持ODBC for Windows。MySQL支持所有的ODBC 2.5函数和其他许多函数,这样就可以用Access连接MySQL服务器,从而使得MySQL的应用被大大扩展。 (5) MySQL支持大型的数据库。虽然对于用PHP编写的网页来说只要能够存放上百条以上的记录数据就足够了,但MySQL可以方便地支持上千万条记录的数据库。作为一个开放源代码的数据库,MySQL可以针对不同的应用进行相应的修改。 (6) MySQL拥有一个非常快速而且稳定的基于线程的内存分配系统,可以持续使用面不必担心其稳定性。事实上,MySQL的稳定性足以应付一个超大规模的数据库。 (7) 强大的查询功能。MySQL支持查询的SELECT和WHERE语句的全部运算符和函数,并且可以在同一查询中混用来自不同数据库的表,从而使得查询变得快捷和方便。 如今,包括Siemens和Silicon Graphics这样的国际知名公司也开始把MySQL作为其数据库管理系统,这就更加证明了MySQL数据库的优越性能和广阔的市场发展前景。第三章 系统设计第一节 系统整体架构该系统所采用的B/S 模式在逻辑体系结构上可以分为用户表现层、业务逻辑层、数据服务层3 层体系统结构.B/S 模式有着C/S 模式不可比拟的优势,如:简化了客户端,不论基于何种平台,只须安装一种通用的浏览器,采用同样的界面访问;能够跨越异质异构网络;稳定性高;特别适用于网上信息发布;服务器端升级维护集中、方便,服务器端可以任意扩充,而对客户端不产生任何影响等.图3.1.1为B/S 模式体系结构图.图3.1.1第二节 系统模块设计按照系统分析的结果,搜索引擎系统设计的主要是实现数据采集、数据保存、数据排序、搜索引擎、前台显示。根据整体的需求,这个系统也可以分为两个大的分类,即采集数据和显示数据。所以搜索系统主要可以分成两个模块:数据采集模块和搜索引擎模块。一、 数据采集模块数据采集模块的功能又称“网络蜘蛛”。 顾名思义,网络蜘蛛就是在网络上爬行的程序,用他来抓取web服务器上的web文档,它可以在扫描web页面的同时检索其内的超链接并加入扫描队列等待以后扫描。扫描队列主要扫描URL链接和URL链接下的网页内容,包括:网页标题、作者、内容、发表时间、链接地址。获取到的数据,逐一保存到数据库中去。具体实现逻辑如图。图3.2.1二、 搜索引擎模块搜索引擎模块主要完成用户对数据的搜索功能。用户使用浏览器,输入搜索的关键字,点击提交。服务器收到用户发出的搜索请求,获取请求中的搜索关键字,然后到数据库中搜索匹配关键字的数据。取出匹配的数据之后按一定的规则排序,最后返回展示到用户界面。整个模块采用的是MVC三层设计模式,M层(即Modle层)代表实体数据模块,V层(即View层)代表数据展示模块,C层(即Control层)代表逻辑控制模块。具体设计逻辑如图。图3.2.2第三节 数据库设计根据系统要求与模块设计,数据库设计主要分成两个表:数据表和排序临时表。数据表的主要作用是存储“数据采集器”采集下来的数据,排序临时表是根据搜索关键字取出来排序的数据。数据表包括的字段有:编号、标题、作者、内容、发表时间、链接地址。字段名是否主键字段类型字段长度是否为允许为空备注id是bigint32否编号newstitle否varchar100是标题newsauthor否varchar100是作者newscontent否text65535是内容newsurl否varchar300是链接地址newsdate否varchar100是日期表3.3.1排序临时表包括的字段有:编号、标题、作者、内容、发表时间、链接地址。字段名是否主键字段类型字段长度是否为允许为空备注id是bigint32否编号newstitle否varchar100是标题newsauthor否varchar100是作者newscontent否text65535是内容newsurl否varchar300是链接地址newsdate否varchar100是日期newsdate_int否varchar100是日期数值表3.3.2第四章 系统实现第一节 数据采集数据采集的实现主要是用了java swing技术。在操作界面中有url输入框、设置抓取周期输入框。url指的是采集目标的网址。抓取周期是隔一定的时间抓取一次。当点击开始按钮时,系统会检查输入url的合法性,如果url合法,则检查抓取周期是否输入。检查都通过后,系统启动线程抓取数据。实现效果如图。图4.1.1一、 解析数据的实现解析数据的实现主要用到了开源jar包htmlparser.jar,htmlparser.jar可以实现对几乎全部网页的解析。里面包含有多种解析方法。本系统中主要用到了标题解析、内容解析、作者解析、日期解析。标题解析的实现代码如下:NodeFilter titleFilter = new TagNameFilter(title);private String getTitle(NodeFilter titleFilter, Parser parser) String titleName = ; try NodeList titleNodeList = (NodeList) parser.parse(titleFilter); if(titleNodeList.size() 0) Node node_title = titleNodeList.elementAt(0);/取节点 if(node_title != null) titleName = node_title.toPlainTextString(); catch (ParserException ex) ex.printStackTrace(); return titleName; 内容解析的实现代码如下:NodeFilter contentFilter1 = new AndFilter(new TagNameFilter(div), new HasAttributeFilter(id, Cnt-Main-Article-QQ);NodeFilter contentFilter2 = new AndFilter(new TagNameFilter(div), new HasAttributeFilter(class, explain);NodeFilter contentFilter = new OrFilter(contentFilter1,contentFilter2);private String getNewsContent(NodeFilter newsContentFilter, Parser parser) String content = null; StringBuilder builder = new StringBuilder(); try NodeList newsContentList = (NodeList) parser.parse(newsContentFilter); for (int i = 0; i newsContentList.size(); i+) Div newsContenTag = (Div) newsContentList.elementAt(i); builder = builder.append(newsContenTag.getStringText(); content = builder.toString(); if (content != null) parser.reset(); parser = Parser.createParser(content, gb2312); StringBean sb = new StringBean(); sb.setCollapse(true); parser.visitAllNodesWith(sb); content = sb.getStrings(); if ( content != null ) content = content.replaceAll(.*a-z.*, ); content = content.replace(我来说两句, ); else System.out.println(没有得到新闻内容!); catch (ParserException ex) ex.printStackTrace(); return content; 作者解析的实现代码如下:NodeFilter newsauthorFilter1 = new AndFilter(new TagNameFilter(div), new HasAttributeFilter(class, ll);NodeFilter newsauthorFilter2 = new AndFilter(new TagNameFilter(span), new HasAttributeFilter(class, color-a-3);NodeFilter newsauthorFilter = new AndFilter(newsauthorFilter2, new HasParentFilter(newsauthorFilter1);private String getNewsAuthor(NodeFilter newsauthorFilter, Parser parser) String newsAuthor = ; try /依据newsauthorFilter的法则对网页进行过滤 NodeList authorList = (NodeList) parser.parse(newsauthorFilter); /获取责任编辑字符串 for (int i = 0; i authorList.size(); i+) Span authorSpan = (Span) authorList.elementAt(i); newsAuthor = authorSpan.getStringText(); catch (ParserException ex) ex.printStackTrace(); return newsAuthor; 日期解析的实现代码如下:NodeFilter newsdateFilter1 = new AndFilter(new TagNameFilter(div), new HasAttributeFilter(class, ll);NodeFilter newsdateFilter2 = new AndFilter(new TagNameFilter(span), new HasAttributeFilter(class, article-time);NodeFilter newsdateFilter = new AndFilter(newsdateFilter2, new HasParentFilter(newsdateFilter1);private String getNewsDate(NodeFilter dateFilter, Parser parser) String newsDate = ; try NodeList dateList = (NodeList) parser.parse(dateFilter); for (int i = 0; i dateList.size(); i+) Span dateTag = (Span)dateList.elementAt(i); newsDate = dateTag.getStringText(); catch (ParserException ex) ex.printStackTrace(); return newsDate; 第二节 搜索引擎的实现搜索引擎的实现是整个系统的核心部分,其主要要解决的问题是提取出匹配搜索关键字的数据,并进行排序。关键字的匹配方式是:先用关键字和数据库中的newstitle字段进行匹配,然后再匹配newscontent字段。排列的方式是:先把时间转换成数字形式,然后用SQL语句中的从大到小排序。图4.2.1实现查询数据的关键代码如下:public List getNews(int start, int end, String keyWord)DB db = new DB();List list = new ArrayList();ResultSet result = null;try String getSql = select * from sortedNews order by newsdate_int DESC limit + start + , + end;System.out.println(getSql);result = db.executeQuery(getSql);if(null != result)while(result.next()String title = result.getString(newstitle);String author = result.getString(newsauthor);String content = result.getString(newscontent);String url = result.getString(newsurl);String date = result.getString(newsdate);String mTitle = title.replace(keyWord, + keyWord+ );String mContent = getTagContent(content, keyWord);if(.equals(author) | null = author | null.equals(author)author = 不详;if(.equals(date) | null = date | null.equals(date)date = 不详;System.out.println(content:+mContent);System.out.println(titile:+title);NewsBean bean = new NewsBean();bean.setNewsTitle(mTitle);bean.setNewsAuthor(author);bean.setNewsContent(mContent);bean.setNewsURL(url);bean.setNewsDate(date);list.add(bean);result.close(); catch (Exception e1) e1.printStackTrace();finallyif(db != null) db.all_close();if(result != null)try result.close(); catch (SQLException e) e.printStackTrace();return list;第三节 数据访问层的实现数据访问层是与数据库交互的层面.主要的作用是对数据的持久化操作,增强系统的可移植性,隐藏数据访问细节.在系统实现过程中,核心业务主要通过Web Service层来实现,Web层将用户请求发给Web Service层,WebService层进行业务处理,并通过数据访问层与后台数据库相交换,将数据结果发给Web层。数据访问层实现的主要方法是JDBC技术。数据库是用MySQL数据库作为容器。实现原理如图。连接数据库代码如下:public static ConnectionPool GetPoolInstance()if(poolInstance = null) poolInstance = new ConnectionPool(com.mysql.jdbc.Driver,jdbc:mysql:/localhost:3306/news_db,root, root);try poolInstance.createPool(); catch (Exception e) e.printStackTrace();return poolInstance;执行查询数据操作代码如下:public ResultSet executeQuery(String sql) throws Exception try /* * Class.forName(org.logicalcobwebs.proxool.ProxoolDriver); con = * DriverManager.getConnection(proxool.xml-test); */conn = connPool.getConnection();stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);rs = stmt.executeQuery(sql); catch (SQLException e) throw e;/ catch(NamingException e)throw e;return rs;执行更新数据库操作代码如下:public int executeUpdate(String sql) throws Exception / stmt = null;/ rs=null;int result = 0;try conn = connPool.getConnection();stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);result = stmt.executeUpdate(sql); catch (SQLException ex) System.err.println(执行SQL语句出错: + ex.getMessage();return result;第五章 系统测试第一节 系统测试的必要性随着信息技术的飞速发展,软件产品已深入到社会生活的各个领域,软件产品的质量自然成为人们关注的焦点。作为商品的产品,都需要经过严格的质量测试,软件产品也不能例外。软件测试是发现软件中错误和缺陷的重要手段,并且实践证明,软件中存在缺陷所造成的损失将远远高于测试的费用,并可能产生其它责任风险和连锁损失。在一些特殊领域 (如航空、国防等),如果使用未经全面测试的软件,还可能造成灾难性后果。一、 单元测试在软件系统中,每个模块完成一个清晰定义的子功能并且他和同级的其他模块的功能之间是相对独立的。因此,把每个模块作为一个单独的实体进行测试来发现错误。通常单元测试和编码属于软件工程的同一个阶段。在编写出源程序代码并通过了编译程序的语法检查之后,可以应用人工测试和计算机测试两种类型的测试,完成单元测试工作。它主要检查逻辑设计错误和编码错误。这一步由本人在程序编译通过后,通过实际运行该模块来进行测试。测试结果达到预定方案要求。二、 集成测试集成测试是测试和组装软件的系统化技术。把模块组装起来同时进行测试,主要目标是测试模块间的协调和通信,着重测试模块间的接口。本系统采用渐增式测试方法,将下一个要测试的模块同已经测试好的那些模块结合起来进行测试。这一步在本系统各模块完成连接后由本人进行运行测试,接口通信良好,系统运行正常。三、 验收测试验收测试是将系统作为一个实体进行测试,它是测试工作的最后一步。验收测试是在用户的积极参与下进行的,让用户使用系统来测试系统是否满足用户的需要,最终提出意见,为下一步改进提供参考信息。这一步在系统完成后,根据当初需求分析调查结果,由本人设计数据在不同条件下对系统进行实际数据测试。测试结果达到预定方案中的需求分析要求。第二节 采集数据模块的测试测试步骤:首先运行数据采集程序,在url输入框中,输入,在设定定时抓取间隔输入框中输入500。然后点击开始按钮,效果如图图5.1.1采集结果是在数据库中的news表中插入了1157条记录,说明成功从1164条url链接中采集了1157条数据。成功率为99%。结果基本让人满意。查看数据库中的数据,发现数据已经成功插入。大部分数据采集成功。第三节 搜索引擎的测试测试步骤:在IE浏览器中的地址栏输入http:/localhost:8080/SerchEngine/,跳转如下页面图5.2.1在搜索输入框中输入“人”关键字,点击搜索按钮,跳转到搜索结果页面图5.2.2可以看到一共搜索出来了106条结果,点击第一条记录,跳转到对应的页面图5.2.3从测试结果来看,测试基本达到了我们预想的测试目标。结束语本文根据搜索引擎的特点,介绍了搜索引擎策略,并作了详细阐述。介绍了数据采集器的基本概念与实现,对基于因特网的搜索引擎结构和性能指标进行了分析。在最后还结合具体代码进行了详细说明。系统从数据的采集到数据库的存储,然后到搜索排序的分析实现。这个流程符合现在主流搜索引擎的结构。系统采用了java、swing、jsp、struts2等技术,以tamcat为服务器,从开发和性能的角度来看,是目前主流的开发模式,代码结构清晰,有利于后期的维护。虽然还有很多搜索算法没有涉及到,但是总的来说,该系统已基本实现了简单搜索引擎。 参考文献1 John Hunt,Chris lmftus著周立斌等译精通J2EEJava企业级应用北京:清华大学出版社,2004 2 DeepakAlur,John Crupi,DanMalks著刘天北,熊节等译J2EE核心模式(第二版)北京:机械工业出版社,2005 3 李志伟基于WEB的飞机故障远程诊断专家系统的设计J计算机应用与软件2002.4 肖金秀,冯沃辉JSP程序设计教程M北京:冶金工业出版社20036 王明,陆正球 基于MVC科研管理系统的研究与实现J微计算机应用,2009,30(1):II一127 刘泽轩,江春华基于 J2EE架构的科研管理系统的设计与实现J计算机工程与设计,2007,28(21):22248 任勇基于J2EE的管理信息系统的开发与研究D北京:北京化工大学,20069 夏冬,白树仁,邓惠建基于J2EE的工作流管理系统模型J计算机工程与科学,2006,310 张凤娟,刘方爱,邢长明基于Hibernate的网格Portal的研究与设计J计算机工程与设计,2009(1)11 胡启敏,薛锦云,钟林辉基于Spring柜架的轻量级J2EE架构与应用J计算机时代,2008(5)12 李腊元,徐鹏基于MVC模式的JSP、Spring和Hiberna
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸设计 > 毕业论文


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!