本科毕业论文-搜索引擎设计_第1页
本科毕业论文-搜索引擎设计_第2页
本科毕业论文-搜索引擎设计_第3页
本科毕业论文-搜索引擎设计_第4页
本科毕业论文-搜索引擎设计_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

沈阳理工大学学士学位论文摘 要随着互联网的迅速发展,网络规模不断扩大,信息储量急剧增长,搜索引擎技术越来越得到广泛地使用。本文通过对各种通用搜索引擎的关键技术进行研究,完成了对通用WEB搜索引擎的设计与实现。搜索引擎系统包括3个功能模块:网页获取模块,数据存储模块和检索模块。本人在课题组中主要承担工作有:系统整体设计、数据库的设计实现以及中文分词系统的设计实现。本系统的整体设计突出操作简便、功能强大、人性化设置、并行处理可移植等特点,其中中文分词,各模块的存储流程是系统的设计亮点。本文中对搜索引擎的各种技术算法进行了介绍,而且根据系统的需要进行了各功能模块的设计。数据库设计的特点是:大容量存储、高效检索和简单查询。索引数据库以页面信息表和词库表为核心,通过对词创建索引以提高检索效率;中文分词系统采用JDK平台开发,实现对中英文句子的分割,使其分为单独的词或词组。关键词:搜索引擎;WEB搜索;中文分词;索引数据库;排序。I沈阳理工大学学士学位论文AbstractWiththerapiddevelopmentoftheinternet,theconstantexpansionofthenetworksize,therun-upgrowingoftheinformationstorage,thetechnologyofthesearchengineisbecomingmoreandmorepopular.ThearticleaccomplishthedesignandrealizationofthegeneralWEBsearchenginethroughthestudyingofallkindsofthegeneralsearchengine.Thesearchenginesystemincludesthreefunctionsmodules.TheyareHomepagegainmodule,datastoragemoduleandretrievalmodule.MymaindutyinthistopicresearchisoverallSystemdesign,databasedesignrealization,Chineseparticiplesystemdesignrealization.Theprominentpointinthisoverallsystemisthatoperationissimple,thefunctionisformidable,thehumannatureestablishment,theparallelprocessingmaytransplantandsoon,especiallytheChineseparticipleandeachmemoryoperationmodule.Thearticledoesnotonlyintroduceallkindsoftechnicalalgorithminthesearchengine,butdesigneachfunctionmoduleaccordingtotheneedofthesystem.Thedatabasedesigncharacteristicis:Largecapacitymemory,highlyeffectiveretrieval,simpleinquiry.Theindexdatabasetakesthepageinformationtableandthewordstorehousetableasacore,enhancingthesearchesefficiencythroughestablishingthewordsindex.ChineseparticiplesystemusestheJDKplatformexploitation,realizationtotheChineseandEnglishsentencedivision,causesittodivideintotheindependentwordorthephrase.Keywords:WEBsearch;Chineseparticiple;Indexdatabase;ArrangesII沈阳理工大学学士学位论文目 录1绪论V1.1研究的背景及意义V1.2国内外研究现状及发展趋势V1.2.1搜索引擎的发展历史介绍V1.2.2当今互联网搜索引擎巨头的发展状况VI1.3本研究的内容及研究方案VII2搜索引擎相关技术IX2.1JSpider软件IX2.1.1JSpider软件介绍IX2.1.2JSpider软件工作原理IX2.2Java、JSP和Android介绍X2.2.1Java介绍X2.2.2Android介绍XI2.3SQL数据库访问技术XII2.3.1传统关系型数据库MySQLXIII2.3.2NoSQLSequoiadb数据库XIV2.4JSP技术XV2.4.1JSP语言介绍XV2.4.2JSP优势XVI2.5WEB开发轻平台-Tomcat简介XVI3系统分析XVIII3.1搜索引擎说明XVIII3.1.1搜索引擎描述XVIII3.1.2搜索引擎开发背景XVIII3.2开发任务XVIII3.2.1搜索引擎的设计要求和目标XVIII3.2.2搜索引擎的设计原则XIX3.3用户需求分析XIX3.3.1用户使用搜索功能习惯XIX3.3.2用户使用搜索功能用例分析XX3.4搜索引擎功能需求分析XXIIII沈阳理工大学学士学位论文3.4.1搜索引擎支持客户端类型XXI3.4.2搜索引擎基本功能XXI3.4.2数据库数据存储分析XXII3.5界面需求分析XXII4搜索引擎设计XXIII4.1搜索引擎结构设计XXIII4.2数据库设计XXIV4.2.1数据库设计的步骤XXIV4.2.2数据库概念结构设计XXV4.2.3数据库逻辑结构设计XXVII4.2.4数据库物理结构设计XXVII4.3数据存储流程设计XXVIII4.3.1网络机器人的基本结构及工作原理XXVIII4.3.2从网络机器人的角度对互联网进行划分XXIX4.3.3抓取策略XXX4.4搜索引擎流程设计XXXII4.4.1搜索引擎总体流程设计XXXII4.4.2检验载入搜索页面合法性XXXIII4.4.3搜索功能设计XXXIV5搜索引擎实现XXXVI5.1JavaBean实现说明XXXVI5.1.1数据库连接类MysqlBeanXXXVI5.1.2分词处理类SpliteWordXXXVII5.1.3生成SQL类CreateSqlXXXVII5.1.4创建ResultBean类CreateResultXLII5.1.5结果集类ResultBeanXLII5.2调用JSpider实现数据收录XLIII5.3实现搜索页面XLV结论XLIX致谢L参考文献LI附录A英语原文LII附录B英语译文LVIIV沈阳理工大学学士学位论文绪论1.1 研究的背景及意义自上个世纪90年代以来随着网络化和信息数字化技术的发展,网络上的信息量以几何数量级递增,人们已经无法很轻易地在网络上搜索到自己想要的信息,却陷入了信息过剩的苦恼当中。这时,搜索引擎软件应运而生。搜索引擎是指根据一定的策略、运用特定的计算机程序搜集互联网上的信息,在对信息进行组织和处理后, 并将处理后的信息显示给用户, 是为用户提供检索服务的系统。从使用者的角度看,搜索引擎提供一个包含搜索框的页面,在搜索框输入词语,通过浏览器提交给搜索引擎后,搜索引擎就会返回跟用户输入的内容相关的信息列表。如果人们希望在互联网上搜索一些资料, 通过搜索引擎就可以快速地查找到你所需要的站点。移动终端近几年发展迅速, Android系统的手机占有率已经不可同日而语,所以人们对Android移动应用的需求也越来越大,将搜索应用和 Android手机结合将会是一个互联网发展的趋势。1.2 国内外研究现状及发展趋势1.2.1 搜索引擎的发展历史介绍互联网发展早期,以雅虎为代表的网站分类目录查询非常流行。网站分类目录由人工整理维护,精选互联网上的优秀网站,并简要描述,分类放置到不同目录下。用户查询时,通过一层层的点击来查找自己想找的网站。也有人把这种基于目录的检索服务网站称为搜索引擎,但从严格意义上讲,它并不是搜索引擎。1990年,加拿大麦吉尔大学计算机学院的师生开发出 Archie。当时,万维网还没有出现,人们通过 FTP来共享交流资源。Archie能定期搜集并分析 FTP服务器上的文件名信息,提供查找分别在各个 FTP主机中的文件。用户必须输入精确的文件名进行搜索, Archie告诉用户哪个 FTP服务器能下载该文件。虽V沈阳理工大学学士学位论文然Archie搜集的信息资源不是网页,但和搜索引擎的基本工作方式是一样的:自动搜集信息资源、建立索引、提供检索服务。所以,Archie被公认为现代搜索引擎的鼻祖。自从搜索引擎问世后,搜索引擎技术飞速发展。1994年4月,斯坦福大学的两名博士生,美籍华人杨致远和DavidFilo共同创办了Yahoo!随着访问量和收录链接数的增长,Yahoo目录开始支持简单的数据库搜索。因为Yahoo!的数据是手工输入的,所以不能真正被归为搜索引擎,事实上只是一个可搜索的目录。Yahoo!中收录的网站,因为都附有简介信息,所以搜索效率明显提高。1996年,二名斯坦福大学的理学博士生拉里?佩奇和谢尔盖?布林开发了一个对网站之间的关系做精确分析为基础的搜寻引擎,他的使用结果上胜于当时使用的基本搜索技术。Google搜索引擎以它简单,干净的页面设计和最有关的搜寻结果赢得了使用者的拥戴。从此,网上冲浪者在互联网上搜索需要信息的难度大大降低,互联网得到了极大发展。1.2.2 当今互联网搜索引擎巨头的发展状况搜索引擎经过几年的发展和摸索,越来越贴近人们的需求,搜索引擎的技术也得到了很大的发展。搜索引擎的最新技术发展包括以下几个方面:提高搜索引擎对用户检索提问的理解为了提高搜索引擎对用户检索提问的理解,就必须有一个好的检索提问语言,为了克服关键词检索和目录查询的缺点,已经出现了自然语言智能答询。用户可以输入简单的疑问句,比如“howcankillvirusofcomputer?。搜索引”擎在对提问进行结构和内容的分析之后,或直接给出提问的答案,或引导用户从几个可选择的问题中进行再选择。自然语言的优势在于,一是使网络交流更加人性化,二是使查询变得更加方便、直接、有效。就以上面的例子来讲,如果用关键词查询,多半人会用“virus这”个词来检索,结果中必然会包括各类病毒的介绍、病毒是怎样产生的等等许多无效信息,而用“howcankillvirusofcomputer?,搜索引”擎会将怎样杀病毒的信息提供给用户,提高了检索效率。对检索结果进行处理:1、基于链接评价的搜索引擎VI沈阳理工大学学士学位论文基于链接评价的搜索引擎的优秀代表是 Google,它独创的“链接评价体系”是基于这样一种认识,一个网页的重要性取决于它被其它网页链接的数量, 特别是一些已经被认定是“重要”的网页的链接数量。这种评价体制与《科技引文索引》的思路非常相似,但是由于互联网是在一个商业化的环境中发展起来的,一个网站的被链接数量还与它的商业推广有着密切的联系,因此这种评价体制在某种程度上缺乏客观性。2、基于访问大众性的搜索引擎基于访问大众性的搜索引擎的代表是directhit,它的基本理念是多数人选择访问的网站就是最重要的网站。根据以前成千上万的网络用户在检索结果中实际所挑选并访问的网站和他们在这些网站上花费的时间来统计确定有关网站的重要性排名,并以此来确定哪些网站最符合用户的检索要求。因此具有典型的趋众性特点。这种评价体制与基于链接评价的搜索引擎有着同样的缺点。3、去掉检索结果中附加的多余信息有调查指出,过多的附加信息加重了用户的信息负担,为了去掉这些过多的附加信息,可以采用用户定制、内容过滤等检索技术。确定搜索引擎信息搜集范围网上的信息浩如烟海,网络资源以十倍速的增长,一个搜索引擎很难收集全所有主题的网络信息,即使信息主题收集得比较全面,由于主题范围太宽,很难将各主题都做得精确而又专业,使得检索结果垃圾太多。这样以来,垂直主题的搜索引擎以其高度的目标化和专业化在各类搜索引擎中占据了一系席之地,比如象股票、天气、新闻等类的搜索引擎,具有很高的针对性,用户对查询结果的满意度较高。作者认为,垂直主题有着极大的发展空间。1.3 本研究的内容及研究方案课题完成基于Android客户端的WEB搜索引擎特点和设计方法研究,完成互联网信息录入和关键字分词、搜索。课题内容如下:1、搜索器:其功能是在互联网中漫游,发现和搜集信息。2、索引器:其功能是理解搜索器所搜索到的信息,从中抽取出索引项,用于表示文档以及生成文档库的索引表。3、检索器:其功能是根据用户的查询在索引库中快速检索文档,进行相关度评价,对将要输出的结果排序,并能按用户的查询需求合理反馈信息。VII沈阳理工大学学士学位论文4、用户接口:其作用是接纳用户查询、显示查询结果、提供个性化查询项。5、基于Android客户端的WEB浏览。课题研究方案:对于课题理论研究部分,通过查找相关资料,进行逻辑推演,得出结论。对于搜索引擎设计和实现部分, 要参考现今主流的技术、关键字分词算法,给出详细的设计方案并实现。搜索引擎采用 Java、JSP、Tomcat开发环境,数据存储采用MySQL和Sequoiadb数据库。VIII沈阳理工大学学士学位论文搜索引擎相关技术2.1 JSpider软件2.1.1 JSpider软件介绍JSpider是一个纯Java编写的高度可配置和可定制的网络蜘蛛引擎。你可以通过JSpider检查提供的网站是否出错,可以对提供的网站内部的链接进行检查,分析提供站点的结构,也可以通过JSpider下载一个完整的网站。Jspider的扩展性非常强大,你也可以自己定制一个JSpider插件来完成指定的功能。2.1.2 JSpider软件工作原理如果把互联网比喻成为一个蜘蛛网,那么,类似 Jspider的软件就像一只蜘蛛一样,在互联网上孜孜不倦地遍历互联网的上各个站点, 然后将其指定内容存储到数据库当中。JSpider软件又被叫作网络爬虫。网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的 URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的 URL放入队列,直到满足系统的一定停止条件, 流程如图2.1所示。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接, 保留有用的链接并将其放入等待抓取的 URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页 URL,并重复上述过程,直到遍历完所有链接时停止。另外,所有被爬虫抓取的网页将会被存储到数据库当中, 进行一定的分析、过滤,并建立索引,以便之后的查询和检索。IX沈阳理工大学学士学位论文Jspider获得URL根据遍历算法,提交下 URL是否处理过是个要处理的URL否根据解析到的HREF属性解析HTML获得页面链接下载页面

把该URL载入已经处理的URL数据库图2.1JSpider工作原理2.2 Java、JSP和Android介绍2.2.1 Java介绍Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE,JavaEE,JavaME)的总称。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。X沈阳理工大学学士学位论文Java由四方面组成:Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(JavaAPI)。平台Java平台由Java虚拟机(JavaVirtualMachine,简称JVM)和Java应用编程接口(ApplicationProgrammingInterface,简称API)构成。Java应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个 Java平台之后,Java应用程序就可运行。Java平台已经嵌入了几乎所有的操作系统。这样 Java程序可以只编译一次,就可以在各种系统中运行。与传统程序不同,Sun公司在推出 Java之际就将其作为一种开放的技术。全球数以万计的 Java开发公司被要求所设计的 Java软件必须相互兼容。“Java语言靠群体的力量而非公司的力量 ”是Sun公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。Sun公司对Java编程语言的解释是:Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。Java平台是基于 Java语言的平台。这样的平台非常流行。因此微软公司推出了与之竞争的.NET平台以及模仿Java的C#语言。2.2.2 Android介绍Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由AndyRubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上, 如电视、数码相机、游戏机等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。Android系统架构和气操作系统一样,采用了分层的架构。从图2.2看,Android分为四个蹭,从高层到底层分别是应用程序曾、应用程序框架层、系统运行库层和Linux内核层。XI沈阳理工大学学士学位论文图2.2Android分层Android应用程序框架,开发人员可以完全访问核心应用程序所使用的 API框架。该应用程序的架构设计简化了组件的重用 ;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块 (不过得遵循框架的安全性)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。Android包含一些C/C++库,这些库能被 Android系统中不同的组件使用。它们通过 Android应用程序框架为开发者提供服务。2.3 SQL数据库访问技术开发一个成功的搜索引擎,数据库扮演着一个重要的角色。从 Jspider遍历并下载网站开始,就要求数据库必须能承受大数据数量、 长时间数据插入,保证快速查找指定关键字段和保持数据库长期稳定性。 数据库是搜索引擎的核心部分之一,涉及到搜索数据的完整性和实时性。 搜索引擎需要一种高效、安全的存取方式访问数据库里的内容,本搜索引擎采用传统数据库 Mysql和新型Nosql数据库Sequoiadb做为解决方案,使用标准的SQL(结构化查询语言)和Java提供的接XII沈阳理工大学学士学位论文口驱动的方式存取数据库。2.3.1 传统关系型数据库 MySQL1、MySQL简介:MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL的SQL语言是用于访问数据库的最常用标准化语言。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库2、关系型数据库介绍在关系型数据库中数据以行和列的形式存储, 以便于用户理解,这一系列的行和列被称为表,一组表便组成了数据库。在关系数据库中:各数据项之间用关系来组织,关系是表之间的一种连接,通过关系,我们可以更灵活地表示和操纵数据;另外,用户可以非常方便的用查询来检索数据库中的数据,一个 Query是一个用于指定数据库中行和列的 SELECT语句。关系数据库是支持关系模型的数据库系统。 关系模型由关系数据结构、关系操作集合和完整性约束三部分组成。 关系操作分为关系代数、关系演算、具有关系代数和关系演算双重特点的语言( SQL语言)。完整性约束提供了丰富的完整性:实体完整性、参照完整性和用户定义的完整性。实体完整性规则:若属性 A是基本关系R的属性,则属性 A不能取空值。参照完整性:若属性(属性组)F是基本关系R的外码,它与基本关系S的主码Key相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:空、.或者取空值(F的每个属性值均为空值);关系代数的运算按运算符的不同主要分为传统的集合运算和专门的关系运算两类。集合运算有二目运算,包括并、交、差、广义笛卡尔积四种运算。专门的关系运算包括选择、投影、连接、除等。根据关系系统支持关系程度不同,可以把关系系统分为四类:表式系统、(最小)关系系统、关系完备系统、全关系系统。XIII沈阳理工大学学士学位论文表式系统:只支持关系数据结构(即表) ,不支持集合级的操作。(最小)关系系统:支持关系数据结构,它支持关系数据结构和选择、投影、连接三种关系操作。关系上完备的系统这类系统支持关系数据结构和所有的关系代数操作 (功能上与关系代数等价)。2.3.2 NoSQLSequoiadb数据库1、Sequoiadb简介Sequoiadb数据库是由巨杉公司自主研发的一款具有完全自主知识产权的大数据数据库内核。Sequoiadb数据库是一款非关系型型数据库,对比传统的关系型数据库,Sequoiadb数据库能更好地支持分布式数据存储、高并发性数据操作,而且未来对于数据库的扩容成本也较传统数据库低。2、NoSQL数据库介绍NoSQL=NotOnlySQL,意即“不仅仅是SQL”,是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。随着互联网web2.0网站的兴起,非关系型的数据库成了一个极其热门的新领域,非关系数据库产品的发展非常迅速。NoSQL数据库特点:它们可以处理超大量的数据。它们运行在便宜的PC服务器集群上,PC集群扩充起来非常方便并且成本很低,避免了“sharding操”作的复杂性和成本。它们击碎了性能瓶颈,NoSQL的支持者称,通过NoSQL架构可以省去将Web或Java应用和数据转换成SQL友好格式的时间,执行速度变得更快。没有过多的操作,虽然NoSQL的支持者也承认关系数据库提供了无可比拟的功能集合,而且在数据完整性上也发挥绝对稳定,他们同时也表示,企业的具体需求可能没有那么多。3、NoSQL数据库比较关系型数据库优点:(1)易扩展XIV沈阳理工大学学士学位论文NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。也无形之间,在架构的层面上带来了可扩展的能力。(2)大数据量,高性能NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。一般MySQL使用QueryCache,每次表的更新Cache就失效,是一种大粒度的Cache,在针对web2.0的交互频繁的应用,Cache性能不高。而NoSQL的Cache是记录级的,是一种细粒度的Cache,所以NoSQL在这个层面上来说就要性能高很多了。(3)灵活的数据模型NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段简直就是一个噩梦。这点在大数据量的 web2.0时代尤其明显。(4)高可用NoSQL在不太影响性能的情况,就可以方便的实现高可用的架构。比如Cassandra,HBase模型,通过复制模型也能实现高可用。2.4 JSP技术2.4.1 JSP语言介绍JSP(JavaServerPages)是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。JSP其根本是一个简化的Serlet设计,他实现了Html语法中的java扩张(以<%,%>形式)。JSP与Servlet一样,是在服务器端执行的,通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户端。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。XV沈阳理工大学学士学位论文JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 JSP(JavaServerPages)是一种动态页面技术,它的主要目的是将表示逻辑从 Servlet中分离出来。JSP页面由HTML代码和嵌入其中的 Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。JavaServlet是JSP的技术基础,而且大型的Web应用程序的开发需要JavaServlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。2.4.2 JSP优势1、一次编写,到处运行。除了系统之外,代码不用做任何更改。2、系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比 ASP的局限性JSP的优势是显而易见的。3、强大的可伸缩性。从只有一个小的 Jar文件就可以运行 Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台 Application进行事务处理,消息处理,一台服务器到无数台服务器, Java显示了一个巨大的生命力。4、多样化和功能强大的开发工具支持。这一点与 ASP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。5、支持服务器端组件。web应用需要强大的服务器端组件来支持,开发人员需要利用其他工具设计实现复杂功能的组件供 web页面调用,以增强系统性能。JSP可以使用成熟的 JAVABEANS组件来实现复杂商务功能。2.5 WEB开发轻平台-Tomcat简介Tomcat是一个免费的开源的 Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由 Apache,Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和JSP规范总能在Tomcat中得到体XVI沈阳理工大学学士学位论文现。与传统的桌面应用程序不同, Tomcat中的应用程序是一个 WAR(WebArchive)文件。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部署和撤销应用。当然本地也可以。XVII沈阳理工大学学士学位论文系统分析3.1 搜索引擎说明3.1.1 搜索引擎描述本研究开发的系统名为基于Android客户端的搜索引擎开发实现。搜索引擎的开发环境为JDK1.6.0和Tomcat,利用Android浏览器插件实现WEB浏览,也可以通过传统的桌面浏览器访问搜索的始页面。3.1.2 搜索引擎开发背景搜索引擎是一种用于帮助Internet用户查询信息的搜索工具,它以一定的策略在Internet中搜集、发现信息,对信息进行理解、提取、组织和处理,并为用户提供检索服务,从而起到信息导航的目的。在人类进入网络时代以前,各个行业普遍感觉信息匮乏的问题,这主要是由于缺乏信息交流的方式。Internet的出现在很大程度上解决了这一问题,但很多人仍感到缺乏他们所需要的信息。而与此同时,相应的信息在Internet上却大量存在着。真正的问题出在人们在如此大的信息海洋里难以找到他们所需要的准确信息。因此,搜索引擎便成为Internet发展的关键性条件。正如大海里蕴藏了丰富的资源,但人们却因为没有先进的工具而无法获得、利用这些资源。Internet作为一个信息的海洋,人们用浏览器挨个网页寻找的方法将很难找到准确的信息,而只能是浪费大量的时间和网络资源。搜索引擎将Internet网中对使用者有用的信息提取出来,无异于从Internet中提炼真金。3.2 开发任务3.2.1 搜索引擎的设计要求和目标开发一个优秀的搜索引擎,要求数据实时更新,中文分词结果符合用户预期,搜索速度迅速,各个客户端之间兼容性好。设计要导到如下目标:XVIII沈阳理工大学学士学位论文1、执行速度快,对于数据库里成千上万条记录,要求快速、准确地查询出用户所希望的结果集,数据库的稳定性至关重要,设计一个良好的逻辑关系非常重要。2、安全、稳定性高,对于不同的搜索内容必须保证系统的稳定。3、中文分词符合词意,对于一个中文搜索引擎,中文分词是一个重要的设计环节,由于中文的特殊性,使得中文搜索引擎在设计时必须考虑中文词汇的有意义性,否则搜索结果会与用户当初设想的相差太远。4、数据记录保持更新,搜索引擎里面的数据内容必须在若干周期内重新更新,保证搜索结果集的实时性。5、多客户端访问,开发客户端过程中考虑各个客户端之间的兼容性。6、操作简单、使用界面具有人性化,清晰明了。3.2.2 搜索引擎的设计原则为了开发一个搜索速度快、高性能的搜索引擎,需要遵循如下设计原则:1、数据库设计原则,充分考虑系统的性能,较少数据冗余,充分考虑各实体的构成和各字段的属性,力求最优设计。2、完整性、真实性、实时性原则,搜索引擎设计时保证数据的完整性、真实性、实时性,搜索的结果集必须为有效连接。3、简单性原则,系统程序要求在保证完整性原则的情况下从简设计,系统必须易于使用,学习成本低。4、面向对象原则,系统设计符合面向对象设计原理,模块化,易于实现和扩展,维护成本低。5、界面友好,界面美观、大气、易用。3.3 用户需求分析3.3.1 用户使用搜索功能习惯用户在使用搜索引擎时,主要原因是在生活中遇到不明白的事物, 急需在互联网中查找他想要的答案。网上用户使用搜索引擎时的习惯如图 3.1所示。XIX沈阳理工大学学士学位论文图3.1 用户使用搜索引擎分析用户使用搜索引擎的习惯分析:用户在生活中遇到问题;用户使用搜索引擎,在搜索框中输入想要查找的关键字;使用搜索功能,搜索引擎在后台进行数据处理,中文分词分析,与数据库进行交互;客户端取得服务器返回的结果集,进行排版显示;用户查看搜索结果,点击链接,查看网站的具体内容。3.3.2 用户使用搜索功能用例分析用户在生活中使用搜索引擎方式如图 3.2所示。XX沈阳理工大学学士学位论文图3.2 用户使用搜索引擎用例用户在生活中发现问题,使用桌面浏览器或者 Android浏览器访问搜索页面,通过关键字在数据库中查找对应的信息。3.4 搜索引擎功能需求分析3.4.1 搜索引擎支持客户端类型本搜索引擎是基于 WEB浏览器开发的,支持桌面版本的所有浏览器和Android客户端的浏览器使用。3.4.2 搜索引擎基本功能本搜索引擎通过WEB浏览器端输入要搜索的关键字,引擎进行中文分词、关键字处理并送进数据库进行操作,然后用户获取到需要搜索的结果集。通过对引擎的目标确定和用例分析,可以全面准确地把握引擎的功能需求。这套基于WEB浏览器的搜索引擎可以方便用户快速地在 Internet上查找资源,免除由于Internet资源浩瀚而无法快速、准确地查找想要的站点。由于本引擎设计时已经考虑到跨平台的兼容性问题, 所以用户无需担心由于不同客户端而造成XXI沈阳理工大学学士学位论文引擎无法正常工作、显示问题。引擎具体功能清单如下:1、实现跨平台,引擎在设计之初已经考虑到跨平台的兼容性,所以对于桌面的浏览器和Android浏览器可以完美访问搜索页。2、中文分词,可以对一行长中文句子进行分词,分成若干中文短语,再送进数据库进行搜索,从而提高搜索的准确性,同时符合用户日常输入习惯。3、结果集分页显示,对搜索返回的结果集进行分页显示,方便用户查看各个搜索结果。4、数据库信息实时更新,定期对数据库中的信息进行更新处理,保证搜索结果的实时性。3.4.2 数据库数据存储分析搜索引擎搜索的基础数据全部存储在数据库当中, 所以设计良好的数据表结构也是优秀搜索引擎的关键。数据库的主要实体有:1、链接详细信息表,用于存储当前链接的标题、简单说明、字符集和关键字;2、链接列表,用于存储当前链接当中再指向其他的超链接列表;3、链接表,用于存储当前链接的具体访问地址,存储时间。3.5 界面需求分析软件用户界面目前已经成为衡量软件质量的重要指标,友好的界面可以让用户轻松使用软件搜索所需要的资源,用户对软件的好感可以很好的转化为用户对软件的喜爱和依赖,在提高软件的质量同时,也可以引导用户高效地查找资源,特别是面对不熟悉电脑操作的中老年人群,简单的界面也是他们是否会选择使用你的搜索引擎关键。所以在设计操作界面时,开发者努力做到使用界面清晰明了,让第一次使用的用户可以轻易使用。本搜索引擎,用户通过浏览器实现搜索功能,用户操作界面就是网页。为了使用户拥有良好的使用体验,要求网页设计到达以下要求。1、页面布局规整,按钮设计应该大气、显眼。2、页面背景美观、柔和。3、页面功能布置有条理,清晰引导用户使用。XXII沈阳理工大学学士学位论文搜索引擎设计4.1 搜索引擎结构设计根据需求分析,我们可以知道用户在使用搜索功能时,客户端一般是桌面浏览器或者移动浏览器,根据需求分析,可以设计出兼容多种客户端平台的搜索引擎结构,如图4.1所示。图4.1 搜索引擎使用设计如图4.1中的设备功能说明:1、服务器:安装Windows7操作系统、Tomcat程序、配置JDK环境;2、数据库:MySQL数据库、Sequoiadb数据库;3、终端设备:传统桌面浏览器、移动浏览器。XXIII沈阳理工大学学士学位论文4.2 数据库设计数据库是搜索引擎的核心部分之一。搜索引擎的主要工作原理,当用户通过客户端输入搜索关键字后,送入引擎中进行分词工作,然后将要搜索命令传送到数据库进行查询操作,最后将查询结果返还到客户端中显示打印,所以数据库的设计直接影响到搜索结果的返回。对于一个出色的搜索引擎,如何设计出一个高效、稳定、安全的数据库成为关键。4.2.1 数据库设计的步骤数据库设计一般经过规划、需求分析、概念设计、逻辑设计和物理设计五个步骤,下面分别介绍这五个步骤要完成的工作。1、数据库规划,对于一个数据库应用项目,需要在规划阶段完成,系统调查、可行性分析和系统目标确定等工作,项目实施作初步准备。2、需求分析,确定数据库的使用范围,信息收集和处理需求,产生系统业务流程图、系统关联图、以及数据流图。3、概念结构设计,概念结构设计的目标是产生系统信息需求的数据库概念结构,即概念模型,概念模型是独立于计算机硬件结构和数据库管理系统的。 数据库概念结构设计采用实体 -联系(E-R)模型设计方法,实体 -联系(E-R)模型设计方法可以直观地描述概念模型。组成实体 -联系(E-R)模型的元素有实体、联系和属性,实体是指用户工作环境中所涉及的事物, 属性是实体特性的描述,联系表示实体之间的关系。图 4.2为E-R模型中各元素的表示方法。实体 属性 联系图4.2 实体描述4、逻辑结构设计,数据库逻辑结构设计就是将 E-R图转换为数据库管理系统支持的数据模型。对于关系数据库,就是要转换为关系模式,确定实体的码即数据库中的数据表以及其主键,确定实体联系的类型,即将联系转换为一对一、一对多、多对多等类型。XXIV沈阳理工大学学士学位论文5、物理结构设计,数据库物理结构设计包括存储类型的选择、属性数据类型的确定、表的索引结构的确定和数据库存取路径的确定, 目前的主流数据库管理系统提供易用的工具,帮助用户完成数据库的物理结构设计。在需求分析中已经完成数据库的规划和需求分析,之后三个小节将给出系统数据库的概念结构设计、逻辑结构设计和物理结构设计。4.2.2 数据库概念结构设计1、由数据库需求分析可知,搜索引擎数据库的实体包括链接详细信息表、链接列表、链接表,实体之间关系如图4.3所示。链接详细信联系 链接息关联链接列表图4.3 实体及实体之间关系 E-R图本搜索引擎对数据库的使用,主要集中在关键的链接详细信息表和链接表,因为本搜索引擎只对互联网上各个站点的信息标题进行搜索, 链接列表是记录当前链接中它自身重定向的若干链接信息。2、链接详细信息实体 E-R图,如图4.4所示。XXV沈阳理工大学学士学位论文ID号字符集格式 标题信息链接详细信息简单描述 关键字信息图4.4 链接详细信息 E-R图3、链接实体E-R图,如图4.5所示ID号访问地址 收录时间链接图4.5 链接实体 E-R图4、链接列表实体E-R图,如图4.6所示ID号 连接地址链接列表XXVI沈阳理工大学学士学位论文图4.6 链接列表实体 E-R图4.2.3 数据库逻辑结构设计数据库逻辑结构设计要将独立于数据库管理系统的概念模型转换为适于数据库系统逻辑结构,转换后的逻辑结构需合计算机处理信息的逻辑并能与数据库系统的特性兼容。转化过程中,每个实体都需要转换为一个关系,每个关系的主码必须不为空,对于二元联系需要按照一对多、弱实体、一对一、多对多等联系来定义外码。根据数据库实体E-R图可以得到各实体的属性:链接详细信息:ID号,字符集格式,标题信息,关键字信息,简单描述。链接:ID号,访问地址,收录信息。链接列表:ID号,链接地址。将概念模型转换为如下的关系模式:链接详细信息(ID号,字符集格式,标题信息,关键字信息,简单描述),主码为ID号,外码为链接的ID号。链接(ID号,访问地址,收录信息),主码为ID号,外码为链接详细信息的ID号。链接列表(ID号,链接地址),主码为ID号,外码为链接详细信息的 ID号。联系:联系转换为链接详细信息与链接之间一对一关系, 外码为链接详细信息的ID号和链接的ID号。关联:关联转换为链接详细信息与链接列表之间一对一关系,外码为链接详细信息的ID号与链接列表的ID号。4.2.4 数据库物理结构设计物理结构设计,数据库物理结构设计包括存储类型的选择、属性数据类型的确定、表的索引结构的确定和数据库存取路径的确定。本系统的数据库存放在与服务器程序相同的路径中,在程序中通过应用接口以应用程序账户的方式访问数据库。在数据库表设计器中,为每一个关系设计对应的表,并确定各属性的数据类型和空间占用。1、链接详细信息(contents)数据表设计见表 4.1。XXVII沈阳理工大学学士学位论文表4.1链接详细信息数据表字段含义字段名数据类型是否为主键可否为空ID号idint(11)YESNO字符集格式charsetVarchar(128)NOYES标题信息TitletextNOYES关键字信息KeywordtextNOYES简单描述descriptionlongtextNOYES2、链接(urls)数据表设计见表 4.2。表4.2连接数据表字段含义字段名数据类型是否为主键可否为空ID号idint(11)YESNO访问地址urltextNOYES收录时间capture_timetimestampNOCURRENT_TIMESTAMP3、链接列表(links)数据表设计见表 4.3。表4.3 链接列表数据表字段含义 字段名 数据类型 是否为主键 可否为空ID号 id int(11) YES NO链接地址 link text NO YES4.3 数据存储流程设计本搜索引擎的数据录入全部依赖 JSpider软件实现。网络机器人是搜索引擎抓取系统的重要组成部分。机器人软件的主要目的是将互联网上的网页信息下载到本地形成一个或联网内容的镜像备份。4.3.1 网络机器人的基本结构及工作原理一个通用的网络机器人的框架如图 4.7所示。XXVIII沈阳理工大学学士学位论文图4.7 网络机器人原理图网络机器人的基本工作流程如下:首先选取一部分精心挑选的种子URL;将这些URL放入待抓取URL队列;从待抓取URL队列中取出待抓取的URL,解析DNS,并且得到主机的ip,并将URL对应的网页下载下来,存储进已下砸网页库中。此外,将这些URL放进已抓取URL队列;分析已抓取URL队列中的URL,分析其中的其他URL,并且将URL放入待抓取URL队列,从而进入下一个循环。4.3.2 从网络机器人的角度对互联网进行划分对应的,可以将互联网的所有页面分为五个部分,如图 4.8所示。XXIX沈阳理工大学学士学位论文图4.8 互联网页面划分1、已下载未过期的网页;2、已下载已过期网页:抓取到的网页实际上市互联网内同过的一个镜像与备份,互联网是动态变化的,一部分互联网上的内容已经发生了变化,这时,这部分抓取到的网页就已经过期了;3、待下载网页:也就是待抓取 URL队列中的那些页面;4、可知网页:还没有抓取下来,也没有在待抓取URL队列中,但是可以通过对已抓取页面或者待抓取URL对应页面进行分析获取到的URL,认为是可知网页;5、还有一部分网页,机器人是无法直接抓取下载的。称为不可知网页。4.3.3 抓取策略在网络机器人中,待抓取URL队列是很重要的一部分。待抓取URL队列中的URL以什么样的顺序排列也是一个很重要的问题,因为这涉及到先抓取那个页面,后抓取哪个页面。而决定这些URL排列顺序的方法,叫做抓取策略。下面重点介绍几种常见的抓取策略:1、深度优先遍历策略深度优先遍历策略是指网络爬虫会从起始页开始, 一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。具体原理如图XXX沈阳理工大学学士学位论文4.9所示。图4.9 深度优先遍历原理图遍历的路径:A-F-G E-H-I B C D2、宽度有线遍历策略宽度优先遍历策略的基本思路是,将新下载网页中发现的链接直接插入待抓取URL队列的末尾。也就是指网络爬虫会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。以图4.9为例:遍历路径:A-B-C-D-E-FGHI3、反响链接数策略反向链接数是指一个网页被其他网页链接指向的数量。 反向链接数表示的是一个网页的内容受到其他人的推荐的程度。 因此,很多时候搜索引擎的抓取系统会使用这个指标来评价网页的重要程度,从而决定不同网页的抓取先后顺序。在真实的网络环境中,由于广告链接、作弊链接的存在,反向链接数不能完全等他我那个的重要程度。因此,搜索引擎往往考虑一些可靠的反向链接数。XXXI沈阳理工大学学士学位论文4、PartialPageRank策略PartialPageRank算法借鉴了PageRank算法的思想:对于已经下载的网页,连同待抓取URL队列中的URL,形成网页集合,计算每个页面的PageRank值,计算完之后,将待抓取URL队列中的URL按照PageRank值的大小排列,并按照该顺序抓取页面。如果每次抓取一个页面,就重新计算 PageRank值,一种折中方案是:每抓取K个页面后,重新计算一次PageRank值。但是这种情况还会有一个问题:对于已经下载下来的页面中分析出的链接,也就是我们之前提到的未知网页那一部分,暂时是没有PageRank值的。为了解决这个问题,会给这些页面一个临时的PageRank值:将这个网页所有入链传递进来的 PageRank值进行汇总,这样就形成了该未知页面的 PageRank值,从而参与排序。5、OPIC策略该算法实际上也是对页面进行一个重要性打分。在算法开始前,给所有页面一个相同的初始现金(cash)。当下载了某个页面P之后,将P的现金分摊给所有从P中分析出的链接,并且将P的现金清空。对于待抓取URL队列中的所有页面按照现金数进行排序。6、大站优先策略对于待抓取URL队列中的所有网页,根据所属的网站进行分类。对于待下载页面数多的网站,优先下载。这个策略也因此叫做大站优先策略。4.4 搜索引擎流程设计4.4.1 搜索引擎总体流程设计用户在载入起始搜索页面后,通过输入框输入关键字进行站点查找。 具体流程如图4.10所示。XXXII沈阳理工大学学士学位论文开 始载入起始搜索页面 否输入关键字跳转搜索执行页面 判断关键字合法性 ?是分词操作 连接数据库站点查询返回结果集结 束图4.10 搜索引擎总体流程4.4.2 检验载入搜索页面合法性检验载入搜索页面合法性流程,如图 4.11所示。XXXIII沈阳理工大学学士学位论文开始载入搜索页面是否是

非法访问页面 ?否标示符是否为真 ?是关键字为空? 否跳转起始搜索页 分词操作结束图4.11 检验载入搜索页面合法性流程4.4.3 搜索功能设计搜索功能流程设计,如图 4.12所示。XXXIV沈阳理工大学学士学位论文开 始获取搜索关键字关键字合法 ?是连接数据库操作分词操作否 构造 SQL语句数据库搜索获取搜索结果集结 束图4.12 搜索功能流程图XXXV沈阳理工大学学士学位论文搜索引擎实现完成系统结构设计和所有模块程序流程设计后, 本系统的设计脉络已经基本清晰,接下来可以编写代码,实现系统。搜索引擎与用户直接交互的是浏览器的搜索界面, 在设计、开发和实现搜索界面时,考虑到代码编写的规范和实现的效率因素,作者将重要的实现代码用JavaBean封装实现。这样在开发搜索界面时,实现代码与布局代码分离,作者只需要认真考虑界面布局即可,而无需担心代码之间相互交错,增加开发难度。5.1 JavaBean实现说明5.1.1 数据库连接类MysqlBeanMysqlBean的主要作用是与数据库进行交互处理, 包括连接数据库、执行查询语句、返回查询结果。1、连接数据库代码try{Class.forName("com.mysql.jdbc.Driver").newInstance();Connectionconnection=DriverManager.getConnection(url);this.connection=connection;Statementstatement=connection.createStatement();this.statement=statement;}catch(ClassNotFoundExceptione){//throwe.printStackTrace();}catch(SQLExceptione){}catch(Exceptione){}2、执行查询语句由于MysqlBean只是重新封装了 Java中ResultSet类,所以只需要将 SQL语句送进ResultSet的executeQuery()即可。实现代码如下:ResultSetrs=this.statement.executeQuery(sql);XXXVI沈阳理工大学学士学位论文5.1.2 分词处理类SpliteWordSpliteWord作用是对用户输入的关键字进行简单的分割,然后保存在一个String数组中返回。代码实现如下:String[]chineseWord_1=this.word.split("[a-z|A-Z|0-9\\pP]+");StringchineseWord_X=this.word.replaceAll("[a-z|A-Z0|0-9\\pP]+","");String[]chineseWord_2={chineseWord_X};String[]englishWord=this.word.split("[^a-z|A-Z]+");String[][]result={chineseWord_1,chineseWord_2,englishWord};returnresult;5.1.3 生成SQL类CreateSqlCreateSql作用是生成一个可执行的 SQL语句,其中,对关键字进行中文分词。实现代码如下:for(intix=0;ix<select_word.length;++ix){switch(ix){case0:if(select_word[ix].length==1&&select_word[ix][0].equals("")){break;}for(intjx=select_word[ix].length;jx>0;--jx){//if(jx==1){continue;}if(jx==1&&select_word[ix][0].equals("")){continue;}result.append("orcon.titlelike'%");for(inti=0;i<jx;++i){if(!(select_word[ix][i].equals(""))){result.append(""+select_word[ix][i]+"%");XXXVII沈阳理工大学学士学位论文}}result.append("' ");}//result.append("@@@@@@@@@@@");for(intjx=0;jx<select_word[ix].length;++jx){if(select_word[ix][jx].equals("")){continue;}if(select_word[ix].length==1||(select_word[ix].length==2select_word[ix][0].equals(""))){break;}if(!(select_word[ix][jx].equals(""))){result.append("orcon.titlelike'%"+select_word[ix][jx]+"%'");}}//result.append("@@@@@@@@@@@");for(intjx=0;jx<select_word[ix].length;++jx){if(jx==select_word[ix].length -1||(select_word[ix].length==2)){break;}if(select_word[ix].length==1||(select_word[ix].length==2select_word[ix][0].equals(""))){break;}if( select_word[ ix ].length == 1 &&select_word[ix][0].equals("")){break;}//result.append("orcon.titlelike'%");XXXVIII沈阳理工大学学士学位论文if(select_word[ix][jx].equals("")){continue;}if((jx+1)<select_word[ix].length){result.append("orcon.titlelike'%");}for(inti=jx+1;i<select_word[ix].length;++i){if(!(select_word[ix][i].equals(""))){result.append(""+select_word[ix][i]+"%");}}result.append("' ");}//result.append("@@@@@@@@@@@");//result.append("0isover");break;case1:for(intjx=0;jx<select_word[ix].length;++jx){if(!(select_word[ix][jx].equals(""))){char[]char_word=select_word[ix][jx].toCharArray();if(char_word.length<=2){break;}result.append("orcon.titlelike'%");for(inti=0;i<char_word.length;++i){if(1==(char_word.length-i)){result.append(""+char_word[i]+"%");}XXXIX沈阳理工大学学士学位论文else{result.append(""+char_word[i]+"");++i;result.append(""+char_word[i]+"%");}}result.append("' ");}}//result.append("1isover");break;case2:if((0<select_word[ix].length)){result.append("orcon.titlelike'%");}for(intjx=0;jx<select_word[ix].length;++jx){if(!(select_word[ix][jx].equals(""))){result.append(""+select_word[ix][jx]+"%");}}if(0<select_word[ix].length){result.append("' ");}//result.append("@@@@@@@@@@@");/*if((select_word[ix].length==3&&select_word[ix][0].equals(""))||select_word[ix].length==2){break;XL沈阳理工大学学士学位论文}*/if(select_word[ix].length==1){break;}for(intjx=select_word[ix].length-1;jx>0;--jx){if(jx==1&&(select_word[ix][0].equals(""))){continue;}result.append("orcon.titlelike'%");for(inti=0;i<jx;++i){if(!(select_word[ix][i].equals(""))){result.append(""+select_word[ix][i]+"%");}}result.append("' ");}//result.append("@@@@@@@@@@@");for(intjx=0;jx<select_word[ix].length;++jx){if(select_word[ix][jx].equals("")){continue;}if((jx+1)<select_word[ix].length){result.append("orcon.titlelike'%");}for(inti=jx+1;i<select_word[ix].length;++i){if(!(select_word[ix][i].equals(""))){result.append(""+select_word[ix][i]+"%");}}if((jx+1)<select_word[ix].length){result.append("' ");}XLI沈阳理工大学学士学位论文}//result.append("@@@@@@@@@@@");//result.append("2isover");break;}}result.append(");");Stringstr=result.toString();returnstr;5.1.4 创建ResultBean类CreateResultCreateResult作用是创建ResultBean结果集。由于从接收关键字到真正创建ResultBean结果集,程序每次执行的动作都相似,所以作者将这些动作进行封装,使得代码更加简洁、更好维护。publicResultSetbuildResult(Stringvalue){this.selectWord=value;this.mySql.conn();this.splitWord.setWord(this.selectWord);String[][]arraySelect= this.splitWord.split_word();StringselectSql=this.createSql.createSQL(arraySelect,this.selectWord);this.rs=this.mySql.sqlQuery(selectSql);returnthis.rs;}5.1.5 结果集类ResultBeanResultBean封装了ResultSet中大部分的接口,使得 ResultSet能够适应网页显示要求,例如:next()、destroy()等函数,ResultBean的setPageNow()函数使得JSP页面对分页显示的控制更简单、代码更优雅。ResultBean的setPageNow()代码XLII沈阳理工大学学士学位论文publicvoidsetPageNow(intpage_now){if(!(page_now<1||page_now>this.page_count)){this.page_now=page_now;}else{if(page_now<1){this.page_now=1;}else{this.page_now=this.page_count;}}try{this.rs.beforeFirst();intmove_num=(this.page_now-1)*this.page_num;this.rs.relative(move_num);}catch(SQLExceptione){}}JSP调用代码rs.setPageNow(pageInt);5.2 调用JSpider实现数据收录JSpider兼容多种数据库,将克各种数据库接口重新

温馨提示

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

最新文档

评论

0/150

提交评论