还剩59页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
摘要随着互联网的迅速发展,网络规模不断扩大,信息储量急剧增长,搜索引擎技术越来越得到广泛地使用本文通过对各种通用搜索引擎的关键技术进行研究,完成了对通用WEB搜索引擎的设计与实现搜索引擎系统包括3个功能模块网页获取模块,数据存储模块和检索模块本人在课题组中主要承担工作有系统整体设计、数据库的设计实现以及中文分词系统的设计实现本系统的整体设计突出操作简便、功能强大、人性化设置、并行处理可移植等特点,其中中文分词,各模块的存储流程是系统的设计亮点本文中对搜索引擎的各种技术算法进行了介绍,而且根据系统的需要进行了各功能模块的设计数据库设计的特点是大容量存储、高效检索和简单查询索引数据库以页面信息表和词库表为核心,通过对词创建索引以提高检索效率;中文分词系统采用JDK平台开发,实现对中英文句子的分割,使其分为单独的词或词组关键词:搜索引擎;WEB搜索;中文分词;索引数据库;排序AbstractWiththerapiddevelopmentoftheinternettheconstantexpansionofthenetworksizetherun-upgrowingoftheinformationstoragethetechnologyofthesearchengineisbecomingmoreandmorepopular.ThearticleaccomplishthedesignandrealizationofthegeneralWEBsearchenginethroughthestudyingofallkindsofthegeneralsearchengine.Thesearchenginesystemincludesthreefunctionsmodules.TheyareHomepagegainmoduledatastoragemoduleandretrievalmodule.MymaindutyinthistopicresearchisoverallSystemdesigndatabasedesignrealizationChineseparticiplesystemdesignrealization.TheprominentpointinthisoverallsystemisthatoperationissimplethefunctionisformidablethehumannatureestablishmenttheparallelprocessingmaytransplantandsoonespeciallytheChineseparticipleandeachmemoryoperationmodule.Thearticledoesnotonlyintroduceallkindsoftechnicalalgorithminthesearchenginebutdesigneachfunctionmoduleaccordingtotheneedofthesystem.Thedatabasedesigncharacteristicis:Largecapacitymemoryhighlyeffectiveretrievalsimpleinquiry.Theindexdatabasetakesthepageinformationtableandthewordstorehousetableasacoreenhancingthesearchesefficiencythroughestablishingthewordsindex.ChineseparticiplesystemusestheJDKplatformexploitationrealizationtotheChineseandEnglishsentencedivisioncausesittodivideintotheindependentwordorthephrase.Keywords:WEBsearch;Chineseparticiple;Indexdatabase;Arranges目录TOC\o1-3\h\z\u1绪论
11.1研究的背景及意义
11.2国内外研究现状及发展趋势
11.
2.1搜索引擎的发展历史介绍
11.
2.2当今互联网搜索引擎巨头的发展状况
21.3本研究的内容及研究方案32搜索引擎相关技术
52.1JSpider软件
52.
1.1JSpider软件介绍
52.
1.2JSpider软件工作原理
52.2Java、JSP和Android介绍
62.
2.1Java介绍
62.
2.2Android介绍
72.3SQL数据库访问技术
82.
3.1传统关系型数据库MySQL
92.
3.2NoSQLSequoiadb数据库
102.4JSP技术
112.
4.1JSP语言介绍
112.
4.2JSP优势
122.5WEB开发轻平台-Tomcat简介123系统分析
143.1搜索引擎说明
143.
1.1搜索引擎描述
143.
1.2搜索引擎开发背景
143.2开发任务
143.
2.1搜索引擎的设计要求和目标
143.
2.2搜索引擎的设计原则
153.3用户需求分析
153.
3.1用户使用搜索功能习惯
153.
3.2用户使用搜索功能用例分析
163.4搜索引擎功能需求分析
173.
4.1搜索引擎支持客户端类型
173.
4.2搜索引擎基本功能
173.
4.2数据库数据存储分析
183.5界面需求分析184搜索引擎设计
194.1搜索引擎结构设计
194.2数据库设计
204.
2.1数据库设计的步骤
204.
2.2数据库概念结构设计
214.
2.3数据库逻辑结构设计
234.
2.4数据库物理结构设计
234.3数据存储流程设计
244.
3.1网络机器人的基本结构及工作原理
254.
3.2从网络机器人的角度对互联网进行划分
254.
3.3抓取策略
264.4搜索引擎流程设计
284.
4.1搜索引擎总体流程设计
284.
4.2检验载入搜索页面合法性
294.
4.3搜索功能设计305搜索引擎实现
325.1JavaBean实现说明
325.
1.1数据库连接类MysqlBean
325.
1.2分词处理类SpliteWord
335.
1.3生成SQL类CreateSql
335.
1.4创建ResultBean类CreateResult
385.
1.5结果集类ResultBean
395.2调用JSpider实现数据收录
405.3实现搜索页面41结论45致谢46参考文献47附录A英语原文48附录B英语译文521绪论
1.1研究的背景及意义自上个世纪90年代以来随着网络化和信息数字化技术的发展,网络上的信息量以几何数量级递增,人们已经无法很轻易地在网络上搜索到自己想要的信息,却陷入了信息过剩的苦恼当中这时,搜索引擎软件应运而生搜索引擎是指根据一定的策略、运用特定的计算机程序搜集互联网上的信息,在对信息进行组织和处理后,并将处理后的信息显示给用户,是为用户提供检索服务的系统从使用者的角度看,搜索引擎提供一个包含搜索框的页面,在搜索框输入词语,通过浏览器提交给搜索引擎后,搜索引擎就会返回跟用户输入的内容相关的信息列表如果人们希望在互联网上搜索一些资料,通过搜索引擎就可以快速地查找到你所需要的站点移动终端近几年发展迅速,Android系统的手机占有率已经不可同日而语,所以人们对Android移动应用的需求也越来越大,将搜索应用和Android手机结合将会是一个互联网发展的趋势
1.2国内外研究现状及发展趋势
1.
2.1搜索引擎的发展历史介绍互联网发展早期,以雅虎为代表的网站分类目录查询非常流行网站分类目录由人工整理维护,精选互联网上的优秀网站,并简要描述,分类放置到不同目录下用户查询时,通过一层层的点击来查找自己想找的网站也有人把这种基于目录的检索服务网站称为搜索引擎,但从严格意义上讲,它并不是搜索引擎1990年,加拿大麦吉尔大学计算机学院的师生开发出Archie当时,万维网还没有出现,人们通过FTP来共享交流资源Archie能定期搜集并分析FTP服务器上的文件名信息,提供查找分别在各个FTP主机中的文件用户必须输入精确的文件名进行搜索,Archie告诉用户哪个FTP服务器能下载该文件虽然Archie搜集的信息资源不是网页,但和搜索引擎的基本工作方式是一样的自动搜集信息资源、建立索引、提供检索服务所以,Archie被公认为现代搜索引擎的鼻祖自从搜索引擎问世后,搜索引擎技术飞速发展1994年4月,斯坦福大学的两名博士生,美籍华人杨致远和DavidFilo共同创办了Yahoo!随着访问量和收录链接数的增长,Yahoo目录开始支持简单的数据库搜索因为Yahoo!的数据是手工输入的,所以不能真正被归为搜索引擎,事实上只是一个可搜索的目录Yahoo!中收录的网站,因为都附有简介信息,所以搜索效率明显提高1996年,二名斯坦福大学的理学博士生拉里•佩奇和谢尔盖•布林开发了一个对网站之间的关系做精确分析为基础的搜寻引擎,他的使用结果上胜于当时使用的基本搜索技术Google搜索引擎以它简单,干净的页面设计和最有关的搜寻结果赢得了使用者的拥戴从此,网上冲浪者在互联网上搜索需要信息的难度大大降低,互联网得到了极大发展
1.
2.2当今互联网搜索引擎巨头的发展状况搜索引擎经过几年的发展和摸索,越来越贴近人们的需求,搜索引擎的技术也得到了很大的发展搜索引擎的最新技术发展包括以下几个方面提高搜索引擎对用户检索提问的理解为了提高搜索引擎对用户检索提问的理解,就必须有一个好的检索提问语言,为了克服关键词检索和目录查询的缺点,已经出现了自然语言智能答询用户可以输入简单的疑问句,比如“howcankillvirusofcomputer”搜索引擎在对提问进行结构和内容的分析之后,或直接给出提问的答案,或引导用户从几个可选择的问题中进行再选择自然语言的优势在于,一是使网络交流更加人性化,二是使查询变得更加方便、直接、有效就以上面的例子来讲,如果用关键词查询,多半人会用“virus”这个词来检索,结果中必然会包括各类病毒的介绍、病毒是怎样产生的等等许多无效信息,而用“howcankillvirusofcomputer”,搜索引擎会将怎样杀病毒的信息提供给用户,提高了检索效率对检索结果进行处理
1、基于链接评价的搜索引擎基于链接评价的搜索引擎的优秀代表是Google,它独创的“链接评价体系”是基于这样一种认识,一个网页的重要性取决于它被其它网页链接的数量,特别是一些已经被认定是“重要”的网页的链接数量这种评价体制与《科技引文索引》的思路非常相似,但是由于互联网是在一个商业化的环境中发展起来的,一个网站的被链接数量还与它的商业推广有着密切的联系,因此这种评价体制在某种程度上缺乏客观性
2、基于访问大众性的搜索引擎基于访问大众性的搜索引擎的代表是directhit,它的基本理念是多数人选择访问的网站就是最重要的网站根据以前成千上万的网络用户在检索结果中实际所挑选并访问的网站和他们在这些网站上花费的时间来统计确定有关网站的重要性排名,并以此来确定哪些网站最符合用户的检索要求因此具有典型的趋众性特点这种评价体制与基于链接评价的搜索引擎有着同样的缺点
3、去掉检索结果中附加的多余信息有调查指出,过多的附加信息加重了用户的信息负担,为了去掉这些过多的附加信息,可以采用用户定制、内容过滤等检索技术确定搜索引擎信息搜集范围网上的信息浩如烟海,网络资源以十倍速的增长,一个搜索引擎很难收集全所有主题的网络信息,即使信息主题收集得比较全面,由于主题范围太宽,很难将各主题都做得精确而又专业,使得检索结果垃圾太多这样以来,垂直主题的搜索引擎以其高度的目标化和专业化在各类搜索引擎中占据了一系席之地,比如象股票、天气、新闻等类的搜索引擎,具有很高的针对性,用户对查询结果的满意度较高作者认为,垂直主题有着极大的发展空间
1.3本研究的内容及研究方案课题完成基于Android客户端的WEB搜索引擎特点和设计方法研究,完成互联网信息录入和关键字分词、搜索课题内容如下
1、搜索器其功能是在互联网中漫游,发现和搜集信息
2、索引器其功能是理解搜索器所搜索到的信息,从中抽取出索引项,用于表示文档以及生成文档库的索引表
3、检索器其功能是根据用户的查询在索引库中快速检索文档,进行相关度评价,对将要输出的结果排序,并能按用户的查询需求合理反馈信息
4、用户接口其作用是接纳用户查询、显示查询结果、提供个性化查询项
5、基于Android客户端的WEB浏览课题研究方案对于课题理论研究部分,通过查找相关资料,进行逻辑推演,得出结论对于搜索引擎设计和实现部分,要参考现今主流的技术、关键字分词算法,给出详细的设计方案并实现搜索引擎采用Java、JSP、Tomcat开发环境,数据存储采用MySQL和Sequoiadb数据库2搜索引擎相关技术
2.1JSpider软件
2.
1.1JSpider软件介绍JSpider是一个纯Java编写的高度可配置和可定制的网络蜘蛛引擎你可以通过JSpider检查提供的网站是否出错,可以对提供的网站内部的链接进行检查,分析提供站点的结构,也可以通过JSpider下载一个完整的网站Jspider的扩展性非常强大,你也可以自己定制一个JSpider插件来完成指定的功能
2.
1.2JSpider软件工作原理如果把互联网比喻成为一个蜘蛛网,那么,类似Jspider的软件就像一只蜘蛛一样,在互联网上孜孜不倦地遍历互联网的上各个站点,然后将其指定内容存储到数据库当中JSpider软件又被叫作网络爬虫网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列直到满足系统的一定停止条件,流程如图
2.1所示聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到遍历完所有链接时停止另外,所有被爬虫抓取的网页将会被存储到数据库当中,进行一定的分析、过滤,并建立索引,以便之后的查询和检索#0;#0;Jspider获得URLURL是否处理过根据遍历算法,提交下个要处理的URL是解析HTML否下载页面根据解析到的HREF属性获得页面链接把该URL载入已经处理的URL数据库图
2.1JSpider工作原理
2.2Java、JSP和Android介绍
2.
2.1Java介绍Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSEJavaEEJavaME)的总称Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景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.2Android介绍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内核层图
2.2Android分层Android应用程序框架,开发人员可以完全访问核心应用程序所使用的API框架该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性)同样,该应用程序重用机制也使用户可以方便的替换程序组件Android包含一些C/C++库,这些库能被Android系统中不同的组件使用它们通过Android应用程序框架为开发者提供服务
2.3SQL数据库访问技术开发一个成功的搜索引擎,数据库扮演着一个重要的角色从Jspider遍历并下载网站开始,就要求数据库必须能承受大数据数量、长时间数据插入,保证快速查找指定关键字段和保持数据库长期稳定性数据库是搜索引擎的核心部分之一,涉及到搜索数据的完整性和实时性搜索引擎需要一种高效、安全的存取方式访问数据库里的内容,本搜索引擎采用传统数据库Mysql和新型Nosql数据库Sequoiadb做为解决方案,使用标准的SQL结构化查询语言和Java提供的接口驱动的方式存取数据库
2.
3.1传统关系型数据库MySQL
1、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的每个属性值均为空值);关系代数的运算按运算符的不同主要分为传统的集合运算和专门的关系运算两类集合运算有二目运算,包括并、交、差、广义笛卡尔积四种运算专门的关系运算包括选择、投影、连接、除等根据关系系统支持关系程度不同,可以把关系系统分为四类表式系统、(最小)关系系统、关系完备系统、全关系系统表式系统只支持关系数据结构(即表),不支持集合级的操作(最小)关系系统支持关系数据结构,它支持关系数据结构和选择、投影、连接三种关系操作关系上完备的系统这类系统支持关系数据结构和所有的关系代数操作(功能上与关系代数等价)
2.
3.2NoSQLSequoiadb数据库
1、Sequoiadb简介Sequoiadb数据库是由巨杉公司自主研发的一款具有完全自主知识产权的大数据数据库内核Sequoiadb数据库是一款非关系型型数据库,对比传统的关系型数据库,Sequoiadb数据库能更好地支持分布式数据存储、高并发性数据操作,而且未来对于数据库的扩容成本也较传统数据库低
2、NoSQL数据库介绍NoSQL=NotOnlySQL,意即“不仅仅是SQL”,是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入随着互联网web
2.0网站的兴起,非关系型的数据库成了一个极其热门的新领域,非关系数据库产品的发展非常迅速NoSQL数据库特点1它们可以处理超大量的数据2它们运行在便宜的PC服务器集群上,PC集群扩充起来非常方便并且成本很低,避免了“sharding”操作的复杂性和成本3它们击碎了性能瓶颈,NoSQL的支持者称,通过NoSQL架构可以省去将Web或Java应用和数据转换成SQL友好格式的时间,执行速度变得更快4没有过多的操作,虽然NoSQL的支持者也承认关系数据库提供了无可比拟的功能集合,而且在数据完整性上也发挥绝对稳定,他们同时也表示,企业的具体需求可能没有那么多
3、NoSQL数据库比较关系型数据库优点1易扩展NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性数据之间无关系,这样就非常容易扩展也无形之间,在架构的层面上带来了可扩展的能力2大数据量,高性能NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀这得益于它的无关系性,数据库的结构简单一般MySQL使用QueryCache,每次表的更新Cache就失效,是一种大粒度的Cache,在针对web
2.0的交互频繁的应用,Cache性能不高而NoSQL的Cache是记录级的,是一种细粒度的Cache,所以NoSQL在这个层面上来说就要性能高很多了3灵活的数据模型NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式而在关系数据库里,增删字段是一件非常麻烦的事情如果是非常大数据量的表,增加字段简直就是一个噩梦这点在大数据量的web
2.0时代尤其明显4高可用NoSQL在不太影响性能的情况,就可以方便的实现高可用的架构比如Cassandra,HBase模型,通过复制模型也能实现高可用
2.4JSP技术
2.
4.1JSP语言介绍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程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易JSPJavaServerPages是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来JSP页面由HTML代码和嵌入其中的Java代码所组成服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器JavaServlet是JSP的技术基础,而且大型的Web应用程序的开发需要JavaServlet和JSP配合才能完成JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点
2.
4.2JSP优势
1、一次编写,到处运行除了系统之外,代码不用做任何更改
2、系统的多平台支持基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展相比ASP的局限性JSP的优势是显而易见的
3、强大的可伸缩性从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力
4、多样化和功能强大的开发工具支持这一点与ASP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下
5、支持服务器端组件web应用需要强大的服务器端组件来支持,开发人员需要利用其他工具设计实现复杂功能的组件供web页面调用,以增强系统性能JSP可以使用成熟的JAVABEANS组件来实现复杂商务功能
2.5WEB开发轻平台-Tomcat简介Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成由于有了Sun的参与和支持,最新的Servlet和JSP规范总能在Tomcat中得到体现与传统的桌面应用程序不同,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部署和撤销应用当然本地也可以3系统分析
3.1搜索引擎说明
3.
1.1搜索引擎描述本研究开发的系统名为基于Android客户端的搜索引擎开发实现搜索引擎的开发环境为JDK
1.
6.0和Tomcat,利用Android浏览器插件实现WEB浏览,也可以通过传统的桌面浏览器访问搜索的始页面
3.
1.2搜索引擎开发背景搜索引擎是一种用于帮助Internet用户查询信息的搜索工具,它以一定的策略在Internet中搜集、发现信息,对信息进行理解、提取、组织和处理,并为用户提供检索服务,从而起到信息导航的目的在人类进入网络时代以前,各个行业普遍感觉信息匮乏的问题,这主要是由于缺乏信息交流的方式Internet的出现在很大程度上解决了这一问题,但很多人仍感到缺乏他们所需要的信息而与此同时,相应的信息在Internet上却大量存在着真正的问题出在人们在如此大的信息海洋里难以找到他们所需要的准确信息因此,搜索引擎便成为Internet发展的关键性条件正如大海里蕴藏了丰富的资源,但人们却因为没有先进的工具而无法获得、利用这些资源Internet作为一个信息的海洋,人们用浏览器挨个网页寻找的方法将很难找到准确的信息,而只能是浪费大量的时间和网络资源搜索引擎将Internet网中对使用者有用的信息提取出来,无异于从Internet中提炼真金
3.2开发任务
3.
2.1搜索引擎的设计要求和目标开发一个优秀的搜索引擎,要求数据实时更新,中文分词结果符合用户预期,搜索速度迅速,各个客户端之间兼容性好设计要导到如下目标
1、执行速度快,对于数据库里成千上万条记录,要求快速、准确地查询出用户所希望的结果集,数据库的稳定性至关重要,设计一个良好的逻辑关系非常重要
2、安全、稳定性高,对于不同的搜索内容必须保证系统的稳定
3、中文分词符合词意,对于一个中文搜索引擎,中文分词是一个重要的设计环节,由于中文的特殊性,使得中文搜索引擎在设计时必须考虑中文词汇的有意义性,否则搜索结果会与用户当初设想的相差太远
4、数据记录保持更新,搜索引擎里面的数据内容必须在若干周期内重新更新,保证搜索结果集的实时性
5、多客户端访问,开发客户端过程中考虑各个客户端之间的兼容性
6、操作简单、使用界面具有人性化,清晰明了
3.
2.2搜索引擎的设计原则为了开发一个搜索速度快、高性能的搜索引擎,需要遵循如下设计原则
1、数据库设计原则,充分考虑系统的性能,较少数据冗余,充分考虑各实体的构成和各字段的属性,力求最优设计
2、完整性、真实性、实时性原则,搜索引擎设计时保证数据的完整性、真实性、实时性,搜索的结果集必须为有效连接
3、简单性原则,系统程序要求在保证完整性原则的情况下从简设计,系统必须易于使用,学习成本低
4、面向对象原则,系统设计符合面向对象设计原理,模块化,易于实现和扩展,维护成本低
5、界面友好,界面美观、大气、易用
3.3用户需求分析
3.
3.1用户使用搜索功能习惯用户在使用搜索引擎时,主要原因是在生活中遇到不明白的事物,急需在互联网中查找他想要的答案网上用户使用搜索引擎时的习惯如图
3.1所示图
3.1用户使用搜索引擎分析用户使用搜索引擎的习惯分析1用户在生活中遇到问题;2用户使用搜索引擎,在搜索框中输入想要查找的关键字;3使用搜索功能,搜索引擎在后台进行数据处理,中文分词分析,与数据库进行交互;4客户端取得服务器返回的结果集,进行排版显示;5用户查看搜索结果,点击链接,查看网站的具体内容
3.
3.2用户使用搜索功能用例分析用户在生活中使用搜索引擎方式如图
3.2所示图
3.2用户使用搜索引擎用例用户在生活中发现问题,使用桌面浏览器或者Android浏览器访问搜索页面,通过关键字在数据库中查找对应的信息
3.4搜索引擎功能需求分析
3.
4.1搜索引擎支持客户端类型本搜索引擎是基于WEB浏览器开发的,支持桌面版本的所有浏览器和Android客户端的浏览器使用
3.
4.2搜索引擎基本功能本搜索引擎通过WEB浏览器端输入要搜索的关键字,引擎进行中文分词、关键字处理并送进数据库进行操作,然后用户获取到需要搜索的结果集通过对引擎的目标确定和用例分析,可以全面准确地把握引擎的功能需求这套基于WEB浏览器的搜索引擎可以方便用户快速地在Internet上查找资源,免除由于Internet资源浩瀚而无法快速、准确地查找想要的站点由于本引擎设计时已经考虑到跨平台的兼容性问题,所以用户无需担心由于不同客户端而造成引擎无法正常工作、显示问题引擎具体功能清单如下
1、实现跨平台,引擎在设计之初已经考虑到跨平台的兼容性,所以对于桌面的浏览器和Android浏览器可以完美访问搜索页
2、中文分词,可以对一行长中文句子进行分词,分成若干中文短语,再送进数据库进行搜索,从而提高搜索的准确性,同时符合用户日常输入习惯
3、结果集分页显示,对搜索返回的结果集进行分页显示,方便用户查看各个搜索结果
4、数据库信息实时更新,定期对数据库中的信息进行更新处理,保证搜索结果的实时性
3.
4.2数据库数据存储分析搜索引擎搜索的基础数据全部存储在数据库当中,所以设计良好的数据表结构也是优秀搜索引擎的关键数据库的主要实体有
1、链接详细信息表,用于存储当前链接的标题、简单说明、字符集和关键字;
2、链接列表,用于存储当前链接当中再指向其他的超链接列表;
3、链接表,用于存储当前链接的具体访问地址,存储时间
3.5界面需求分析软件用户界面目前已经成为衡量软件质量的重要指标,友好的界面可以让用户轻松使用软件搜索所需要的资源,用户对软件的好感可以很好的转化为用户对软件的喜爱和依赖,在提高软件的质量同时,也可以引导用户高效地查找资源,特别是面对不熟悉电脑操作的中老年人群,简单的界面也是他们是否会选择使用你的搜索引擎关键所以在设计操作界面时,开发者努力做到使用界面清晰明了,让第一次使用的用户可以轻易使用本搜索引擎,用户通过浏览器实现搜索功能,用户操作界面就是网页为了使用户拥有良好的使用体验,要求网页设计到达以下要求
1、页面布局规整,按钮设计应该大气、显眼
2、页面背景美观、柔和
3、页面功能布置有条理,清晰引导用户使用4搜索引擎设计
4.1搜索引擎结构设计根据需求分析,我们可以知道用户在使用搜索功能时,客户端一般是桌面浏览器或者移动浏览器,根据需求分析,可以设计出兼容多种客户端平台的搜索引擎结构,如图
4.1所示图
4.1搜索引擎使用设计如图
4.1中的设备功能说明
1、服务器安装Windows7操作系统、Tomcat程序、配置JDK环境;
2、数据库MySQL数据库、Sequoiadb数据库;
3、终端设备传统桌面浏览器、移动浏览器
4.2数据库设计数据库是搜索引擎的核心部分之一搜索引擎的主要工作原理,当用户通过客户端输入搜索关键字后,送入引擎中进行分词工作,然后将要搜索命令传送到数据库进行查询操作,最后将查询结果返还到客户端中显示打印,所以数据库的设计直接影响到搜索结果的返回对于一个出色的搜索引擎,如何设计出一个高效、稳定、安全的数据库成为关键
4.
2.1数据库设计的步骤数据库设计一般经过规划、需求分析、概念设计、逻辑设计和物理设计五个步骤,下面分别介绍这五个步骤要完成的工作
1、数据库规划,对于一个数据库应用项目,需要在规划阶段完成,系统调查、可行性分析和系统目标确定等工作,项目实施作初步准备
2、需求分析,确定数据库的使用范围,信息收集和处理需求,产生系统业务流程图、系统关联图、以及数据流图
3、概念结构设计,概念结构设计的目标是产生系统信息需求的数据库概念结构,即概念模型,概念模型是独立于计算机硬件结构和数据库管理系统的数据库概念结构设计采用实体-联系E-R模型设计方法,实体-联系E-R模型设计方法可以直观地描述概念模型组成实体-联系E-R模型的元素有实体、联系和属性,实体是指用户工作环境中所涉及的事物,属性是实体特性的描述,联系表示实体之间的关系图
4.2为E-R模型中各元素的表示方法#0;#0;实体联系属性图
4.2实体描述
4、逻辑结构设计,数据库逻辑结构设计就是将E-R图转换为数据库管理系统支持的数据模型对于关系数据库,就是要转换为关系模式,确定实体的码即数据库中的数据表以及其主键,确定实体联系的类型,即将联系转换为一对
一、一对多、多对多等类型
5、物理结构设计,数据库物理结构设计包括存储类型的选择、属性数据类型的确定、表的索引结构的确定和数据库存取路径的确定,目前的主流数据库管理系统提供易用的工具,帮助用户完成数据库的物理结构设计在需求分析中已经完成数据库的规划和需求分析,之后三个小节将给出系统数据库的概念结构设计、逻辑结构设计和物理结构设计
4.
2.2数据库概念结构设计
1、由数据库需求分析可知,搜索引擎数据库的实体包括链接详细信息表、链接列表、链接表,实体之间关系如图
4.3所示#0;#0;链接详细信息联系链接关联链接列表图
4.3实体及实体之间关系E-R图本搜索引擎对数据库的使用,主要集中在关键的链接详细信息表和链接表,因为本搜索引擎只对互联网上各个站点的信息标题进行搜索,链接列表是记录当前链接中它自身重定向的若干链接信息
2、链接详细信息实体E-R图,如图
4.4所示#0;链接详细信息ID号字符集格式简单描述标题信息关键字信息图
4.4链接详细信息E-R图
3、链接实体E-R图,如图
4.5所示#0;链接ID号访问地址收录时间图
4.5链接实体E-R图
4、链接列表实体E-R图,如图
4.6所示#0;链接列表ID号连接地址图
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表
4.1链接详细信息数据表字段含义字段名数据类型是否为主键可否为空ID号idint11YESNO字符集格式charsetVarchar128NOYES标题信息TitletextNOYES关键字信息KeywordtextNOYES简单描述descriptionlongtextNOYES
2、链接(urls)数据表设计见表
4.2表
4.2连接数据表字段含义字段名数据类型是否为主键可否为空ID号idint11YESNO访问地址urltextNOYES收录时间capture_timetimestampNOCURRENT_TIMESTAMP
3、链接列表(links)数据表设计见表
4.3表
4.3链接列表数据表字段含义字段名数据类型是否为主键可否为空ID号idint11YESNO链接地址linktextNOYES
4.3数据存储流程设计本搜索引擎的数据录入全部依赖JSpider软件实现网络机器人是搜索引擎抓取系统的重要组成部分机器人软件的主要目的是将互联网上的网页信息下载到本地形成一个或联网内容的镜像备份
4.
3.1网络机器人的基本结构及工作原理一个通用的网络机器人的框架如图
4.7所示图
4.7网络机器人原理图网络机器人的基本工作流程如下
1.首先选取一部分精心挑选的种子URL;
2.将这些URL放入待抓取URL队列;
3.从待抓取URL队列中取出待抓取的URL,解析DNS,并且得到主机的ip,并将URL对应的网页下载下来,存储进已下砸网页库中此外,将这些URL放进已抓取URL队列;
4.分析已抓取URL队列中的URL,分析其中的其他URL,并且将URL放入待抓取URL队列,从而进入下一个循环
4.
3.2从网络机器人的角度对互联网进行划分对应的,可以将互联网的所有页面分为五个部分,如图
4.8所示图
4.8互联网页面划分
1、已下载未过期的网页;
2、已下载已过期网页抓取到的网页实际上市互联网内同过的一个镜像与备份,互联网是动态变化的,一部分互联网上的内容已经发生了变化,这时,这部分抓取到的网页就已经过期了;
3、待下载网页也就是待抓取URL队列中的那些页面;
4、可知网页还没有抓取下来,也没有在待抓取URL队列中,但是可以通过对已抓取页面或者待抓取URL对应页面进行分析获取到的URL,认为是可知网页;
5、还有一部分网页,机器人是无法直接抓取下载的称为不可知网页
4.
3.3抓取策略在网络机器人中,待抓取URL队列是很重要的一部分待抓取URL队列中的URL以什么样的顺序排列也是一个很重要的问题,因为这涉及到先抓取那个页面,后抓取哪个页面而决定这些URL排列顺序的方法,叫做抓取策略下面重点介绍几种常见的抓取策略
1、深度优先遍历策略深度优先遍历策略是指网络爬虫会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接具体原理如图
4.9所示图
4.9深度优先遍历原理图遍历的路径A-F-GE-H-IBCD
2、宽度有线遍历策略宽度优先遍历策略的基本思路是,将新下载网页中发现的链接直接插入待抓取URL队列的末尾也就是指网络爬虫会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页以图
4.9为例遍历路径A-B-C-D-E-FGHI
3、反响链接数策略反向链接数是指一个网页被其他网页链接指向的数量反向链接数表示的是一个网页的内容受到其他人的推荐的程度因此,很多时候搜索引擎的抓取系统会使用这个指标来评价网页的重要程度,从而决定不同网页的抓取先后顺序在真实的网络环境中,由于广告链接、作弊链接的存在,反向链接数不能完全等他我那个的重要程度因此,搜索引擎往往考虑一些可靠的反向链接数
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所示#0;#0;#0;载入起始搜索页面输入关键字跳转搜索执行页面判断关键字合法性分词操作连接数据库站点查询返回结果集结束是否开始图
4.10搜索引擎总体流程
4.
4.2检验载入搜索页面合法性检验载入搜索页面合法性流程,如图
4.11所示#0;#0;#0;载入搜索页面非法访问页面结束开始标示符是否为真否关键字为空是分词操作否跳转起始搜索页是是否图
4.11检验载入搜索页面合法性流程
4.
4.3搜索功能设计搜索功能流程设计,如图
4.12所示#0;#0;#0;开始获取搜索关键字关键字合法连接数据库操作是分词操作构造SQL语句数据库搜索获取搜索结果集结束否图
4.12搜索功能流程图5搜索引擎实现完成系统结构设计和所有模块程序流程设计后,本系统的设计脉络已经基本清晰,接下来可以编写代码,实现系统搜索引擎与用户直接交互的是浏览器的搜索界面,在设计、开发和实现搜索界面时,考虑到代码编写的规范和实现的效率因素,作者将重要的实现代码用JavaBean封装实现这样在开发搜索界面时,实现代码与布局代码分离,作者只需要认真考虑界面布局即可,而无需担心代码之间相互交错,增加开发难度
5.1JavaBean实现说明
5.
1.1数据库连接类MysqlBeanMysqlBean的主要作用是与数据库进行交互处理,包括连接数据库、执行查询语句、返回查询结果
1、连接数据库代码try{Class.forNamecom.mysql.jdbc.Driver.newInstance;Connectionconnection=DriverManager.getConnectionurl;this.connection=connection;Statementstatement=connection.createStatement;this.statement=statement;}catchClassNotFoundExceptione{//throwe.printStackTrace;}catchSQLExceptione{}catchExceptione{}
2、执行查询语句由于MysqlBean只是重新封装了Java中ResultSet类,所以只需要将SQL语句送进ResultSet的executeQuery即可实现代码如下ResultSetrs=this.statement.executeQuerysql;
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_1chineseWord_2englishWord};returnresult;
5.
1.3生成SQL类CreateSqlCreateSql作用是生成一个可执行的SQL语句,其中,对关键字进行中文分词实现代码如下forintix=0;ixselect_word.length;++ix{switchix{case0:ifselect_word[ix].length==1select_word[ix]
[0].equals{break;}forintjx=select_word[ix].length;jx0;--jx{//ifjx==1{continue;}ifjx==1select_word[ix]
[0].equals{continue;}result.appendorcon.titlelike%;forinti=0;ijx;++i{if!select_word[ix][i].equals{result.append+select_word[ix][i]+%;}}result.append;}//result.append@@@@@@@@@@@;forintjx=0;jxselect_word[ix].length;++jx{ifselect_word[ix][jx].equals{continue;}ifselect_word[ix].length==1||select_word[ix].length==2select_word[ix]
[0].equals{break;}if!select_word[ix][jx].equals{result.appendorcon.titlelike%+select_word[ix][jx]+%;}}//result.append@@@@@@@@@@@;forintjx=0;jxselect_word[ix].length;++jx{ifjx==select_word[ix].length-1||select_word[ix].length==2{break;}ifselect_word[ix].length==1||select_word[ix].length==2select_word[ix]
[0].equals{break;}ifselect_word[ix].length==1select_word[ix]
[0].equals{break;}//result.appendorcon.titlelike%;ifselect_word[ix][jx].equals{continue;}ifjx+1select_word[ix].length{result.appendorcon.titlelike%;}forinti=jx+1;iselect_word[ix].length;++i{if!select_word[ix][i].equals{result.append+select_word[ix][i]+%;}}result.append;}//result.append@@@@@@@@@@@;//result.append0isover;break;case1:forintjx=0;jxselect_word[ix].length;++jx{if!select_word[ix][jx].equals{char[]char_word=select_word[ix][jx].toCharArray;ifchar_word.length=2{break;}result.appendorcon.titlelike%;forinti=0;ichar_word.length;++i{if1==char_word.length-i{result.append+char_word[i]+%;}else{result.append+char_word[i]+;++i;result.append+char_word[i]+%;}}result.append;}}//result.append1isover;break;case2:if0select_word[ix].length{result.appendorcon.titlelike%;}forintjx=0;jxselect_word[ix].length;++jx{if!select_word[ix][jx].equals{result.append+select_word[ix][jx]+%;}}if0select_word[ix].length{result.append;}//result.append@@@@@@@@@@@;/*ifselect_word[ix].length==3select_word[ix]
[0].equals||select_word[ix].length==2{break;}*/ifselect_word[ix].length==1{break;}forintjx=select_word[ix].length-1;jx0;--jx{ifjx==1select_word[ix]
[0].equals{continue;}result.appendorcon.titlelike%;forinti=0;ijx;++i{if!select_word[ix][i].equals{result.append+select_word[ix][i]+%;}}result.append;}//result.append@@@@@@@@@@@;forintjx=0;jxselect_word[ix].length;++jx{ifselect_word[ix][jx].equals{continue;}ifjx+1select_word[ix].length{result.appendorcon.titlelike%;}forinti=jx+1;iselect_word[ix].length;++i{if!select_word[ix][i].equals{result.append+select_word[ix][i]+%;}}ifjx+1select_word[ix].length{result.append;}}//result.append@@@@@@@@@@@;//result.append2isover;break;}}result.append;;Stringstr=result.toString;returnstr;
5.
1.4创建ResultBean类CreateResultCreateResult作用是创建ResultBean结果集由于从接收关键字到真正创建ResultBean结果集,程序每次执行的动作都相似,所以作者将这些动作进行封装,使得代码更加简洁、更好维护publicResultSetbuildResultStringvalue{this.selectWord=value;this.mySql.conn;this.splitWord.setWordthis.selectWord;String[][]arraySelect=this.splitWord.split_word;StringselectSql=this.createSql.createSQLarraySelectthis.selectWord;this.rs=this.mySql.sqlQueryselectSql;returnthis.rs;}
5.
1.5结果集类ResultBeanResultBean封装了ResultSet中大部分的接口,使得ResultSet能够适应网页显示要求,例如next、destroy等函数,ResultBean的setPageNow函数使得JSP页面对分页显示的控制更简单、代码更优雅ResultBean的setPageNow代码publicvoidsetPageNowintpage_now{if!page_now1||page_nowthis.page_count{this.page_now=page_now;}else{ifpage_now1{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.relativemove_num;}catchSQLExceptione{}}JSP调用代码rs.setPageNowpageInt;
5.2调用JSpider实现数据收录JSpider兼容多种数据库,将克各种数据库接口重新封装在jspider.bat文件中,cmd里执行jspider.bat文件,通过参数来调用相应的数据库接口,操作方式如图
5.1所以图
5.1运行JSpeiderJSpider在遍历和存储过程状态如如
5.2所示图
5.2JSpider遍历、存储过程信息存储在数据库中,各数据表字段信息如图
5.
3、图
5.4所示图
5.3详细信息表图
5.4链接表
5.3实现搜索页面在浏览器中输入相应的访问地址,例如测试机浏览器中,输入http://localhost:8080/chen/index.jsp,回车显示如图
5.5所示图
5.5桌面浏览器搜索页在输入框里输入关键字进行搜索,如图
5.6所示图
5.6桌面浏览器输入点击搜索一下,浏览器就会将关键字送到搜索页,进行搜索处理如图
5.7所示图
5.7桌面浏览器搜索结果显示在Android浏览器的地址栏中输入搜索页的访问地址,例如http://
192.
168.
1.103:8080/chen/index.jsp,输入搜索的关键字,显示如图
5.8所示图
5.8Android浏览器搜索结果显示如果输入的关键字在数据库中不能查找到相关的信息,则ResultBean会返回一个空的集合,在搜索页面上显示如图
5.9图
5.9查询无结果显示如果在输入框输入“新浪汽车”,则在分词处理时会分成“新浪汽车”、“新浪”、“汽车”、“新浪汽车”、“新浪%汽车”,搜索结果如图
5.10所示图
5.10分词搜索结论本搜索引擎搜索的数据库是主要是MYSQL,网站使用Tomcat作为开发环境,使用JSP语言和Java语言进行开发,用本搜索引擎对其数据库进行搜索,可以给用户提供更加舒适的搜索体验服务本搜索算法能满足中小型数据库的深度搜索要求,测试通过各种关键字的搜索,优势是搜索精准度高、搜索界面简洁以用、搜索效率高和搜索算法可移植性高,而且代码思路清晰易懂,注释明确简洁搜索引擎是用户网上冲浪的一个关键软体,在互联网中查找自己想要的信息,最快捷、最方便、最有用的好帮手本搜索引擎具有以下主要功能和特色
1、对关键词进行分词、截字;
2、根据搜索的关键词搜索数据库;
3、能识别关键词中的有效词或字;
4、显示搜索结果的标题和相关内容;
5、对搜索结果进行分页以上功能是站内搜索系统的核心功能优点
1、算法简洁,注释详细简单易懂;
2、搜索精准度较高;
3、搜索效率高;
4、可移植性高;
5、界面精美简洁,用户体验优秀;本次毕业设计基本完成了任务书中的各个要求,但由于本人的能力和知识范围的局限,本设计仍有一些缺陷或者是可以优化的地方,我也明白一个完善的设计不可能靠一时的开发来完成,需要通过不断地测试和修改,其中测试包括开发者测试和第三方用户测试,才可以完善一个系统其实做毕业设计的过程也是一个学习的过程,在本次设计中,有许多技术和语言是我之前没有接触的,但是通过我自己的学习和老师的指导,还有同学的帮助,我最终还是克服了困难,突破了技术瓶颈,完成了系统的各个功能致谢光阴似箭,大学四年的生活一眨眼就过去了,在这四年里,我学习到了许多有用的知识和人生经验,这些都是学校的老师和同学给予我的,全因为有各位老师和同学的存在,我的大学四年才过得那么精彩和有意义在整个毕业设计的过程中,我的毕业设计指导老师穆欣侃老师给予了我耐心和正确的指导,他孜孜不倦地教诲使我能够顺利地完成毕业设计,和其他帮助过我的老师以及领导一样,他们对学生的关怀教育和对学术的严谨执着都使我十分感动,在此衷心感谢他们四年来对我的培养最后我希望可以把我这四年所学的知识运用到实际中去,为社会做出贡献,为帮助到更多的人而努力参考文献
[1]王希瑶.浅析搜索引擎技术及技巧[J]电脑知识与技术
200521.
[2]彭波李晓明.搜索引擎倒排文件的一种分块组织技术[J]电子学报
200502.
[3]黄强.搜索引擎技术研究[J]计算机与现代化
200411.
[4]林彤江志军.Internet的搜索引擎[J]计算机工程与应用
200005.
[5]黄西安.利用“百度”搜索网络信息资源[J]科技情报开发与经济
200504.
[6]陈新明钟涛万钧吴杰张世永.WWW搜索引擎的数据采集技术[J]计算机工程与应用
200207.
[7]都云程卢献华.中文搜索引擎现状与展望[J]中文信息学报
199903.
[8]丁承邵志清.基于字表的中文搜索引擎分词系统的设计与实现[J]计算机工程
200102.
[9]刁倩张惠惠王永成.Internet上的英文搜索引擎[J]计算机工程
199907.
[10]陆兴.八个著名中文搜索引擎的特征及其评析[J]图书馆理论与实践
200302.
[11]张俊林.电子工业出版社.《这就是搜索引擎——核心技术详解》
[12]刘奕群等.清华大学出版社.《搜索引擎技术基础》附录A英语原文AnalysisofJ2EEWEBapplicationconstruction
1、theoutlineoftheconstructionJ2EEsystemincludesmanytechnologiessuchasjavaserverpagesJSPjavaSERVLETenterprisebeanWEBserviceandsoon.ThesetechnologiesappearedhaveprovidedanextremelycompetitivechoicetothedevelopmentofWEBapplicationofelectroniccommerce.Howthesetechnologiesarecombinedtoformthestableconstructionwhichanadaptablprojectneedsisanimportablestepintheprojectdevelopment.Completingthisstepmayformamainmilestonebaseline.Itisaadvantagetoformthisbaseline.Manyfactorsdetermineitinitially.Inordertoformtheconstructionbaselinetheconstructiondesignermustchoosethecentertechnologyintheplatformandmeasureeachkindofadvantages.Oftentheconstructiondesignerhastocheckthemassivetechnicaldatasinthisprocesslistentothesuggestionofmembersinthecomponentprojectconsiderthedomainexpertsdemandandconsiderthesponsor’scostquotaincludingdevelopmentcostandmovementmaintenancecost.Oncetheconstructiondesignerappraisesthesefactorswillinitiallybelocalizatedtotheprojectplayingthemajorroleintheentireprojectprocess.Directionaltechnologytraining:Oncetheconstructionoftheconstructiondesignerisapprovedtoformthebaselinethetechnologywhichtheprojectdevelopmentandthemovementusehasbasicallydetermined.Multitudinousprojectmanagersmayworryaboutbasicskillsofthecomponentmembers’preparedintheproject.Theyneedtobetrainedinthedepartmentprovidingtraining.Buttothetechnicalseawhichtheconstructiondesignerfacesonprojectmanagercannotproposetheexplicittechnicaltrainingdemand.Itisimpossibletocarryontrainingtoalltechnologiesinthesystem!Havingtheconstructionmilestonebaselineprojectmanagerisabletodeterminewhatthisprojectdevelopmentcoulduseanytechnology.Atthetimeproposingthetrainingdemandshouldbemostprecise.Butintheactualprojectdevelopmenttechnicaltrainingmaybecarriedonbeforethebaselinedeterminedconcurrently.Divisionoflabor:HavingagoodconstructionblueprintwecanaccuratelydividetheworksuchashomepagedesignJSPlabelprocessingclassdesignSERVLETdesignsessionbeandesignandmanykindsofrealizations.Thesealldutiesmaybelocatedclearlyontheconstructionblueprintenablingtheprojectcomponentmembertolocateowndutywell.Atthesametimeagoodconstructionblueprintcanalsostandardizethedutydividewellthedutyintoseveralkindsinthesamekindofwhichworkloadandthenatureisidenticalorsimilar.Suchworkloadestimatedhasanextremelygoodfoundation.Movementmaintenance:eachdutyhasquitegoodlocalizationinacomposition.Anyonecanisfamiliarwiththemovementintheentireprojectwiththehelpofitquicklyandlocatefastwherewrongiswhenthemistakeappears.Moreoverhavingtheclearframecompositiontheprojecteditionmanagementalsohasgoodeditiontreetorso.Extension:Theconstructionlikesthetorsoofatoweringbigtree.solongastorsorootsystemjailboughthickthelongsomecollateralbranchesaddsomeleavestobeeasywithoutdoubt.Similarlyhavingstableconstructionstandingthetestitisextremelyfastandeasytoincrease12servicemodules.EverybodyknowstheseadvantageandwantstoformasuchJ2EEapplicationconstructionasitlikeMFCinwindowsplatform.Ithasexperiencedtwobigstagesinthisprocess:model1Actuallymodel1isnotstableconstructionevenfarfromtheconstructionformed.Thefoundationofmodel1isJSPdocument.ItwithdrawstheparameterfromtheHTTPrequesttransfersthecorrespondingservicelogicprocessestheHTTPconversationandfinallyproducestheHTTPdocuments.AseriesofsuchJSPdocumentformsacompletemodel1applicationcertainlypossiblyhavingotherassistanceskindorthedocument.TheearlierASPandthePHPtechnologybelongstothissituation.Tothesummarytheadvantageofthismodelissimplebutitmixestheservicelogicwiththeperformanceinthesameplace.Tothebigapplicationthisshortcomingisabletobetolerated.model2ThroughpracticeaftersummaryinglessontheJ2EEapplicationhasfinallywelcomedtheMVCmodel-viewpneumatic-controlpattern.TheMVCpatternisnotsomethingnewanddifferentwhichtheJ2EEprofessionerproposes.ThereforeinthefrontItalkedaboutprofitingwidely.ThecoreoftheMVCistoachievethreeorevenmulti-layeredloosecouplings.TotheJ2EEsystemwhichhastobasedonthemoduleandwhichcoveredthetechnologyinflatesunceasinglyitreallyisthegospelandtheliberator.ItinsertsacontrolmodulebetweeninthebrowserinthisarticleallthecustomerproxysarecalledbrowserandJSPorSERVLET.ThiscontrolmoduleconcentratesHTTPrequestdistributionlogicwhichissentbythebrowserprocessed.InotherwordsitcouldinputparameteraccordingtoHTTPrequestURLwiththepresentapplicationinternalconditiongivingtherequesttodistributetheJSPorSERVLETofthecorrespondingWEBlevel.MoreoveritalsoisresponsibleforchoicingnextviewinJ2EEJSPandSERVLETcanproducehtmlforbrowsertoformtheview.ThecentralismcontrolmoduleisalsoadvantageoustothesafetycertificationthediaryrecordandsometimesalsosealstherequestdatatogivethefollowingWEBtierlevel.ThissetoflogicalrealizationformsoneapplicationframelikeMFC.
2、candidateplanAtpresenttherealizationframesofthemodel2alsoemergeunceasingly.listsomefamousframesasfollows.
2.
1、ApacheStrutsStrutsisafreeandopenapplicationframeofthesourceWEBlevel.Andtheapachesoftwarefunddevotestothedevelopmentofthestruts.Strutshasthenaturewhichishighlydisposedandhasthecharacteristictabulationwhichgrowsunceasingly.ThefrontcontrollingmoduleaseriesofmovementsclassthemovementmappingthepracticaltoolclassprocessingXMLtheautomaticpackingoftheservercarriesjavabeantheWEBformsupportingconfirmationtheinternationalsupporttheproducedHTMLrealizationperformancelogicandthepatternplatehascomposedthesoulofthestruts.Model:Modelexistsasoneorseveraljavabeans.Thesebeansaredividedintothreekinds.FormbeansformBeansithaspreservedthedatawhichtheHTTPpostrequeststotransmit.InStrutsalloftheFormbeansarethesubclassoftheActionFromclass.Servicelogicbeansistobeusedtoprocesstheservicelogicspecially.SystemmodebeanspreservetheconversationinformationofsinglecustomerwhosurmountesmanyHTTPrequestsandthesystemmode.View:ContinuetopasstheHTTPbytheControlledmodulerequestrealizestheJSPdocumentofview.JSPcanvisitbeansandproducetheresultdocumentstofeedbacktothecustomer.StrutsprovidestheJSPlabelstorehousetoachievethisgoalsuchasHtmlBeanLogicTemplateandsoon.Anditisadvantageousinseparatingtheperformancelogicandprocedurelogic.
2.
2、JATOTheJATOapplicationframeisoldnameoftheiPlanetapplicationframe.ItisonematureformidableapplicationframewhichfacestodevelopeWEBapplicationbasedontheJ2EEstandard.ItunifiedthedemonstrationfieldtheapplicationeventthemodulelevelthemethodsofexploitationtakingthepageasthecenteraswellasMVCanddesigningpatternwithservice-to-workersconceptsandsoon.JATOissuitableforbigultralarge-scaleWEBapplication.Butitisnotapplicationframeoftheenterpriselevel.InotherwordsitcannotprovidedirectlythemethodsofEnterpriselevelmodulesuchasfoundingEJBandWEBservices.Butitmaystructthecustomerapplicationwhichcanvisittheenterpriselevelmodule.Thefunctionofthisframeismainlycomposedofthreeparts:thecoreofiPlanetapplicationframe;themoduleofiPlanetapplicationframe;theexpansionofiPlanetapplicationframe.附录B英语译文J2EEWEB应用架构分析
1、架构概述J2EE体系包括javaserverpagesJSPjavaSERVLETenterprisebean,WEBservice等技术这些技术的出现给电子商务时代的WEB应用程序的开发提供了一个非常有竞争力的选择怎样把这些技术组合起来形成一个适应项目需要的稳定架构是项目开发过程中一个非常重要的步骤完成这个步骤可以形成一个主要里程碑基线形成这个基线有很多好处各种因数初步确定为了形成架构基线,架构设计师要对平台(体系)中的技术进行筛选,各种利弊的权衡往往架构设计师在这个过程中要阅读大量的技术资料,听取项目组成员的建议,考虑领域专家的需求,考虑赞助商成本(包括开发成本和运行维护成本)限额一旦架构设计经过评审,这些因数初步地就有了在整个项目过程中的对项目起多大作用的定位定向技术培训一旦架构师设计的架构得到了批准形成了基线,项目开发和运行所采用的技术基本确定下来了众多的项目经理都会对预备项目组成员的技术功底感到担心;他们需要培训部门提供培训,但就架构师面对的技术海洋,项目经理根本就提不出明确的技术培训需求怎不能够对体系中所有技术都进行培训吧!有了架构里程碑基线,项目经理能确定这个项目开发会采用什么技术,这是提出培训需求应该是最精确的不过在实际项目开发中,技术培训可以在基线确定之前与架构设计并发进行角色分工有了一个好的架构蓝图,我们就能准确划分工作如网页设计,JSP标签处理类设计,SERVLET设计,sessionbean设计,还有各种实现这些任务在架构蓝图上都可以清晰地标出位置,使得项目组成员能很好地定位自己的任务一个好的架构蓝图同时也能规范化任务,能很好地把任务划分为几类,在同一类中的任务的工作量和性质相同或相似这样工作量估计起来有一个非常好的基础运行维护前面说过各个任务在架构图上都有比较好的定位任何人能借助它很快地熟悉整个项目的运行情况,错误出现时能比较快速地定位错误点另外,有了清晰的架构图,项目版本管理也有很好的版本树躯干扩展性架构犹如一颗参天大树的躯干,只要躯干根系牢,树干粗,长一些旁支,加一些树叶轻而易举无疑同样,有一个稳定的经得起考验的架构,增加一两个业务组件是非常快速和容易的大家都知道这些好处,一心想形成一个这样的J2EE应用程序架构(就像在windows平台中的MFC)在这个路程中经历了两个大的阶段模型1模型1其实不是一个什么稳定架构,甚至谈不上形成了架构模型1的基础是JSP文件它从HTTP的请求中提取参数,调用相应的业务逻辑,处理HTTP会话,最后生成HTTP文档一系列这样的JSP文件形成一个完整的模型1应用,当然可能会有其他辅助类或文件早期的ASP和PHP技术就属于这个情况总的看来,这个模型的好处是简单,但是它把业务逻辑和表现混在一块,对大应用来说,这个缺点是令人容忍不了的模型2在经过一番实践,并广泛借鉴和总结经验教训之后,J2EE应用程序终于迎来了MVC(模型-视图-控制)模式MVC模式并不是J2EE行业人士标新立异的,所以前面我谈到广发借鉴MVC的核心就是做到三层甚至多层的松散耦合这对基于组件的,所覆盖的技术不断膨胀的J2EE体系来说真是福音和救星它在浏览器(本文对客户代理都称浏览器)和JSP或SERVLET之间插入一个控制组件这个控制组件集中了处理浏览器发过来的HTTP请求的分发逻辑,也就是说,它会根据HTTP请求的URL输入参数,和目前应用的内部状态,把请求分发给相应的WEB层的JSP或SERVLET另外它也负责选择下一个视图(在J2EE中,JSPSERVLET会生成回给浏览器的html从而形成视图)集中的控制组件也有利于安全验证,日志纪录,有时也封装请求数据给下面的WEBtier层这一套逻辑的实现形成了一个像MFC的应用框架
2、候选方案目前,实现模型2的框架也在不断的涌现,下面列出比较有名的框架
2.
1、ApacheStrutsStruts是一个免费的开源的WEB层的应用框架,apache软件基金致力于struts的开发Struts具是高可配置的性,和有一个不断增长的特性列表一个前端控制组件,一系列动作类,动作映射,处理XML的实用工具类,服务器端javabean的自动填充,支持验证的WEB表单,国际化支持,生成HTML,实现表现逻辑和模版组成了struts的灵魂模型模型以一个或几个javabean的形式存在这些bean分为三种Formbeans表单Beans,它保存了HTTPpost请求传来的数据,在Struts里,所有的Formbeans都是ActionFrom类的子类业务逻辑beans,专门用来处理业务逻辑系统状态beans,它保存了跨越多个HTTP请求的单个客户的会话信息,还有系统状态视图控制组件续传HTTP请求给实现了视图的JSP文件JSP能访问beans并生成结果文档反馈到客户Struts提供JSP标签库Html,Bean,Logic,Template等来达到这个目的,并有利于分开表现逻辑和程序逻辑
2.
2、JATOJATO应用程序框架是iPlanet应用程序框架的旧名它是一个成熟的、强大的,基于J2EE标准的面向于开发WEB应用程序的应用框架结合了显示字段、应用程序事件、组件层次和以页面为中心的开发方法、以及MVC和服务到工作者service-to-workers的设计模式等概念JATO可适用于中、大、超大规模的WEB应用但是它也不是一个企业层的应用框架,也就是说它不会直接提供创建EJBWEBservices等企业层组件的方法,但用它可以构造出访问企业层组件的客户应用这个框架功能主要有三部分组成iPlanet应用框架核心;iPlanet应用框架组件;iPlanet应用框架扩展目录TOC\o1-3\h\z\u摘要IAbstractII1绪论
11.1课题研究的背景及意义
11.
1.1背景介绍
11.
1.2简单理论介绍
11.2课题的意义22天燃气阀门控制系统介绍
42.1天燃气阀门控制系统总体要求
42.2控制系统技术规格及要求
42.
2.1功能要求
42.
2.2系统可靠性
52.
2.3硬件环境
52.
3.Micro1ogix控制系统的特点
62.
3.1MicroLogix可编程控制器
62.
3.2MicroLogix1100系统组成
62.4软件环境
102.
4.1系统组成
102.
4.2操作系统
112.
4.3组态软件RSView32(人机接口)
112.
4.4组态通信软件RSLinx
132.
4.5编程软件RSLogix500133系统实现
153.1用Rslogix软件编程
153.2在RSView32中新建一个项目
173.3RSlinx驱动
173.4设置通道
183.5设置节点
193.6标记数据库建立标签
193.7建立画面,绘制图形
223.8按钮设置
233.9项目启动设置
273.10显示设置
283.11设置数据趋势图
323.12数据记录334运行调试
354.1运行
354.2调试405系统开发总结41参考文献42致谢43附录44。