已阅读5页,还剩56页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
沈阳理工大学学士学位论文摘 要随着互联网的迅速发展,网络规模不断扩大,信息储量急剧增长,搜索引擎技术越来越得到广泛地使用。本文通过对各种通用搜索引擎的关键技术进行研究,完成了对通用WEB搜索引擎的设计与实现。搜索引擎系统包括3个功能模块:网页获取模块,数据存储模块和检索模块。本人在课题组中主要承担工作有:系统整体设计、数据库的设计实现以及中文分词系统的设计实现。本系统的整体设计突出操作简便、功能强大、人性化设置、并行处理可移植等特点,其中中文分词,各模块的存储流程是系统的设计亮点。本文中对搜索引擎的各种技术算法进行了介绍,而且根据系统的需要进行了各功能模块的设计。数据库设计的特点是:大容量存储、高效检索和简单查询。索引数据库以页面信息表和词库表为核心,通过对词创建索引以提高检索效率;中文分词系统采用JDK平台开发,实现对中英文句子的分割,使其分为单独的词或词组。关键词:搜索引擎;WEB搜索;中文分词;索引数据库;排序。AbstractWith the rapid development of the internet, the constant expansion of the network size, the run-up growing of the information storage, the technology of the search engine is becoming more and more popular.The article accomplish the design and realization of the general WEB search engine through the studying of all kinds of the general search engine. The search engine system includes three functions modules. They are Homepage gain module, data storage module and retrieval module. My main duty in this topic research is overall System design, database design realization, Chinese participle system design realization.The prominent point in this overall system is that operation is simple, the function is formidable, the human nature establishment, the parallel processing may transplant and so on, especially the Chinese participle and each memory operation module. The article does not only introduce all kinds of technical algorithm in the search engine, but design each function module according to the need of the system. The database design characteristic is: Large capacity memory, highly effective retrieval, simple inquiry. The index database takes the page information table and the word storehouse table as a core, enhancing the searches efficiency through establishing the words index. Chinese participle system uses the JDK platform exploitation, realization to the Chinese and English sentence division, causes it to divide into the independent word or the phrase.Keywords: WEB search; Chinese participle; Index database; Arranges目 录1 绪论11.1 研究的背景及意义11.2 国内外研究现状及发展趋势11.2.1 搜索引擎的发展历史介绍11.2.2 当今互联网搜索引擎巨头的发展状况21.3 本研究的内容及研究方案32 搜索引擎相关技术52.1 JSpider软件52.1.1 JSpider软件介绍52.1.2 JSpider软件工作原理52.2 Java、JSP和Android介绍62.2.1 Java介绍62.2.2 Android介绍72.3 SQL数据库访问技术82.3.1 传统关系型数据库MySQL92.3.2 NoSQL Sequoiadb数据库102.4 JSP技术112.4.1 JSP语言介绍112.4.2 JSP优势122.5 WEB开发轻平台-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.1 JavaBean实现说明325.1.1 数据库连接类MysqlBean325.1.2 分词处理类SpliteWord335.1.3 生成SQL类CreateSql335.1.4 创建ResultBean类CreateResult385.1.5 结果集类ResultBean395.2 调用JSpider实现数据收录405.3 实现搜索页面41结 论45致 谢46参考文献47附录A 英语原文48附录B 英语译文52IV沈阳理工大学学士学位论文1 绪论1.1 研究的背景及意义自上个世纪90年代以来随着网络化和信息数字化技术的发展,网络上的信息量以几何数量级递增,人们已经无法很轻易地在网络上搜索到自己想要的信息,却陷入了信息过剩的苦恼当中。这时,搜索引擎软件应运而生。搜索引擎是指根据一定的策略、运用特定的计算机程序搜集互联网上的信息,在对信息进行组织和处理后,并将处理后的信息显示给用户,是为用户提供检索服务的系统。从使用者的角度看,搜索引擎提供一个包含搜索框的页面,在搜索框输入词语,通过浏览器提交给搜索引擎后,搜索引擎就会返回跟用户输入的内容相关的信息列表。如果人们希望在互联网上搜索一些资料,通过搜索引擎就可以快速地查找到你所需要的站点。移动终端近几年发展迅速,Android系统的手机占有率已经不可同日而语,所以人们对Android移动应用的需求也越来越大,将搜索应用和Android手机结合将会是一个互联网发展的趋势。1.2 国内外研究现状及发展趋势1.2.1 搜索引擎的发展历史介绍互联网发展早期,以雅虎为代表的网站分类目录查询非常流行。网站分类目录由人工整理维护,精选互联网上的优秀网站,并简要描述,分类放置到不同目录下。用户查询时,通过一层层的点击来查找自己想找的网站。也有人把这种基于目录的检索服务网站称为搜索引擎,但从严格意义上讲,它并不是搜索引擎。1990年,加拿大麦吉尔大学计算机学院的师生开发出Archie。当时,万维网还没有出现,人们通过FTP来共享交流资源。Archie能定期搜集并分析FTP服务器上的文件名信息,提供查找分别在各个FTP主机中的文件。用户必须输入精确的文件名进行搜索,Archie告诉用户哪个FTP服务器能下载该文件。虽然Archie搜集的信息资源不是网页,但和搜索引擎的基本工作方式是一样的:自动搜集信息资源、建立索引、提供检索服务。所以,Archie被公认为现代搜索引擎的鼻祖。自从搜索引擎问世后,搜索引擎技术飞速发展。1994年4月,斯坦福大学的两名博士生,美籍华人杨致远和David Filo共同创办了Yahoo!随着访问量和收录链接数的增长,Yahoo目录开始支持简单的数据库搜索。因为Yahoo!的数据是手工输入的,所以不能真正被归为搜索引擎,事实上只是一个可搜索的目录。Yahoo!中收录的网站,因为都附有简介信息,所以搜索效率明显提高。1996年,二名斯坦福大学的理学博士生拉里佩奇和谢尔盖布林开发了一个对网站之间的关系做精确分析为基础的搜寻引擎,他的使用结果上胜于当时使用的基本搜索技术。Google搜索引擎以它简单,干净的页面设计和最有关的搜寻结果赢得了使用者的拥戴。从此,网上冲浪者在互联网上搜索需要信息的难度大大降低,互联网得到了极大发展。1.2.2 当今互联网搜索引擎巨头的发展状况搜索引擎经过几年的发展和摸索,越来越贴近人们的需求,搜索引擎的技术也得到了很大的发展。搜索引擎的最新技术发展包括以下几个方面:提高搜索引擎对用户检索提问的理解为了提高搜索引擎对用户检索提问的理解,就必须有一个好的检索提问语言,为了克服关键词检索和目录查询的缺点,已经出现了自然语言智能答询。用户可以输入简单的疑问句,比如“how can kill virus of computer?”。搜索引擎在对提问进行结构和内容的分析之后,或直接给出提问的答案,或引导用户从几个可选择的问题中进行再选择。自然语言的优势在于,一是使网络交流更加人性化,二是使查询变得更加方便、直接、有效。就以上面的例子来讲,如果用关键词查询,多半人会用“virus”这个词来检索,结果中必然会包括各类病毒的介绍、病毒是怎样产生的等等许多无效信息,而用“how can kill virus of computer?”,搜索引擎会将怎样杀病毒的信息提供给用户,提高了检索效率。对检索结果进行处理:1、基于链接评价的搜索引擎基于链接评价的搜索引擎的优秀代表是Google,它独创的“链接评价体系”是基于这样一种认识,一个网页的重要性取决于它被其它网页链接的数量,特别是一些已经被认定是“重要”的网页的链接数量。这种评价体制与科技引文索引的思路非常相似,但是由于互联网是在一个商业化的环境中发展起来的,一个网站的被链接数量还与它的商业推广有着密切的联系,因此这种评价体制在某种程度上缺乏客观性。2、基于访问大众性的搜索引擎基于访问大众性的搜索引擎的代表是direct hit,它的基本理念是多数人选择访问的网站就是最重要的网站。根据以前成千上万的网络用户在检索结果中实际所挑选并访问的网站和他们在这些网站上花费的时间来统计确定有关网站的重要性排名,并以此来确定哪些网站最符合用户的检索要求。因此具有典型的趋众性特点。这种评价体制与基于链接评价的搜索引擎有着同样的缺点。3、去掉检索结果中附加的多余信息有调查指出,过多的附加信息加重了用户的信息负担,为了去掉这些过多的附加信息,可以采用用户定制、内容过滤等检索技术。确定搜索引擎信息搜集范围网上的信息浩如烟海,网络资源以十倍速的增长,一个搜索引擎很难收集全所有主题的网络信息,即使信息主题收集得比较全面,由于主题范围太宽,很难将各主题都做得精确而又专业,使得检索结果垃圾太多。这样以来,垂直主题的搜索引擎以其高度的目标化和专业化在各类搜索引擎中占据了一系席之地,比如象股票、天气、新闻等类的搜索引擎,具有很高的针对性,用户对查询结果的满意度较高。作者认为,垂直主题有着极大的发展空间。1.3 本研究的内容及研究方案课题完成基于Android客户端的WEB搜索引擎特点和设计方法研究,完成互联网信息录入和关键字分词、搜索。课题内容如下:1、搜索器:其功能是在互联网中漫游,发现和搜集信息。2、索引器:其功能是理解搜索器所搜索到的信息,从中抽取出索引项,用于表示文档以及生成文档库的索引表。3、检索器:其功能是根据用户的查询在索引库中快速检索文档,进行相关度评价,对将要输出的结果排序,并能按用户的查询需求合理反馈信息。4、用户接口:其作用是接纳用户查询、显示查询结果、提供个性化查询项。5、基于Android客户端的WEB浏览。课题研究方案:对于课题理论研究部分,通过查找相关资料,进行逻辑推演,得出结论。对于搜索引擎设计和实现部分,要参考现今主流的技术、关键字分词算法,给出详细的设计方案并实现。搜索引擎采用Java、JSP、Tomcat开发环境,数据存储采用MySQL和Sequoiadb数据库。2 搜索引擎相关技术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,并重复上述过程,直到遍历完所有链接时停止。另外,所有被爬虫抓取的网页将会被存储到数据库当中,进行一定的分析、过滤,并建立索引,以便之后的查询和检索。图2.1 JSpider工作原理2.2 Java、JSP和Android介绍2.2.1 Java介绍Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。Java由四方面组成:Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。平台Java平台由Java虚拟机(Java Virtual Machine,简称JVM)和Java 应用编程接口(Application Programming Interface,简称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操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。Android系统架构和气操作系统一样,采用了分层的架构。从图2.2看,Android分为四个蹭,从高层到底层分别是应用程序曾、应用程序框架层、系统运行库层和Linux内核层。图2.2 Android分层Android应用程序框架,开发人员可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。Android 包含一些C/C+库,这些库能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。2.3 SQL数据库访问技术开发一个成功的搜索引擎,数据库扮演着一个重要的角色。从Jspider遍历并下载网站开始,就要求数据库必须能承受大数据数量、长时间数据插入,保证快速查找指定关键字段和保持数据库长期稳定性。数据库是搜索引擎的核心部分之一,涉及到搜索数据的完整性和实时性。搜索引擎需要一种高效、安全的存取方式访问数据库里的内容,本搜索引擎采用传统数据库Mysql和新型Nosql数据库Sequoiadb做为解决方案,使用标准的SQL(结构化查询语言)和Java提供的接口驱动的方式存取数据库。2.3.1 传统关系型数据库MySQL1、MySQL简介:MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于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.2 NoSQL Sequoiadb数据库1、Sequoiadb简介Sequoiadb数据库是由巨杉公司自主研发的一款具有完全自主知识产权的大数据数据库内核。Sequoiadb数据库是一款非关系型型数据库,对比传统的关系型数据库,Sequoiadb数据库能更好地支持分布式数据存储、高并发性数据操作,而且未来对于数据库的扩容成本也较传统数据库低。2、NoSQL数据库介绍NoSQL = Not Only SQL ,意即“不仅仅是SQL”,是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。随着互联网web2.0网站的兴起,非关系型的数据库成了一个极其热门的新领域,非关系数据库产品的发展非常迅速。NoSQL数据库特点:1) 它们可以处理超大量的数据。2) 它们运行在便宜的PC服务器集群上,PC集群扩充起来非常方便并且成本很低,避免了“sharding”操作的复杂性和成本。3) 它们击碎了性能瓶颈,NoSQL的支持者称,通过NoSQL架构可以省去将Web或Java应用和数据转换成SQL友好格式的时间,执行速度变得更快。4) 没有过多的操作,虽然NoSQL的支持者也承认关系数据库提供了无可比拟的功能集合,而且在数据完整性上也发挥绝对稳定,他们同时也表示,企业的具体需求可能没有那么多。3、NoSQL数据库比较关系型数据库优点:(1)易扩展NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。也无形之间,在架构的层面上带来了可扩展的能力。(2)大数据量,高性能NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。一般MySQL使用 Query Cache,每次表的更新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(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。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的应用程序的开发变得迅速和容易。 JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。2.4.2 JSP优势1、一次编写,到处运行。除了系统之外,代码不用做任何更改。2、系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP的局限性JSP的优势是显而易见的。3、强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。4、多样化和功能强大的开发工具支持。这一点与ASP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。5、支持服务器端组件。web应用需要强大的服务器端组件来支持,开发人员需要利用其他工具设计实现复杂功能的组件供web页面调用,以增强系统性能。JSP可以使用成熟的JAVA BEANS 组件来实现复杂商务功能。2.5 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部署和撤销应用。当然本地也可以。3 系统分析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 搜索引擎的设计要求和目标开发一个优秀的搜索引擎,要求数据实时更新,中文分词结果符合用户预期,搜索速度迅速,各个客户端之间兼容性好。设计要导到如下目标: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、服务器:安装Windows 7操作系统、Tomcat程序、配置JDK环境;2、数据库:MySQL数据库、Sequoiadb数据库;3、终端设备:传统桌面浏览器、移动浏览器。4.2 数据库设计数据库是搜索引擎的核心部分之一。搜索引擎的主要工作原理,当用户通过客户端输入搜索关键字后,送入引擎中进行分词工作,然后将要搜索命令传送到数据库进行查询操作,最后将查询结果返还到客户端中显示打印,所以数据库的设计直接影响到搜索结果的返回。对于一个出色的搜索引擎,如何设计出一个高效、稳定、安全的数据库成为关键。4.2.1 数据库设计的步骤数据库设计一般经过规划、需求分析、概念设计、逻辑设计和物理设计五个步骤,下面分别介绍这五个步骤要完成的工作。1、 数据库规划,对于一个数据库应用项目,需要在规划阶段完成,系统调查、可行性分析和系统目标确定等工作,项目实施作初步准备。2、需求分析,确定数据库的使用范围,信息收集和处理需求,产生系统业务流程图、系统关联图、以及数据流图。3、概念结构设计,概念结构设计的目标是产生系统信息需求的数据库概念结构,即概念模型,概念模型是独立于计算机硬件结构和数据库管理系统的。数据库概念结构设计采用实体-联系(E-R)模型设计方法,实体-联系(E-R)模型设计方法可以直观地描述概念模型。组成实体-联系(E-R)模型的元素有实体、联系和属性,实体是指用户工作环境中所涉及的事物,属性是实体特性的描述,联系表示实体之间的关系。图4.2为E-R模型中各元素的表示方法。图4.2 实体描述4、逻辑结构设计,数据库逻辑结构设计就是将E-R图转换为数据库管理系统支持的数据模型。对于关系数据库,就是要转换为关系模式,确定实体的码即数据库中的数据表以及其主键,确定实体联系的类型,即将联系转换为一对一、一对多、多对多等类型。5、物理结构设计,数据库物理结构设计包括存储类型的选择、属性数据类型的确定、表的索引结构的确定和数据库存取路径的确定,目前的主流数据库管理系统提供易用的工具,帮助用户完成数据库的物理结构设计。在需求分析中已经完成数据库的规划和需求分析,之后三个小节将给出系统数据库的概念结构设计、逻辑结构设计和物理结构设计。4.2.2 数据库概念结构设计1、由数据库需求分析可知,搜索引擎数据库的实体包括链接详细信息表、链接列表、链接表,实体之间关系如图4.3所示。图4.3 实体及实体之间关系E-R图本搜索引擎对数据库的使用,主要集中在关键的链接详细信息表和链接表,因为本搜索引擎只对互联网上各个站点的信息标题进行搜索,链接列表是记录当前链接中它自身重定向的若干链接信息。2、链接详细信息实体E-R图,如图4.4所示。图4.4 链接详细信息E-R图3、链接实体E-R图,如图4.5所示图4.5 链接实体E-R图4、链接列表实体E-R图,如图4.6所示图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号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 链接列表数据表字段含义字段名数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 让小学生热爱英语学习的策略
- 设备维修保养合作
- 语文要素教学的方法探讨
- 货源稳定质量保证
- 质量保证书在购房过程中的作用
- 购买虚拟现实服务合同
- 购销合同与采购合同的合同范本
- 购销合同签订中的合同风险控制问题
- 购销奶粉合同范本
- 资产评估服务合同价值
- 一《撰写报告》(课件)-【中职专用】高二语文同步课件(高教版2023·职业模块)
- 概算审核服务投标方案(技术方案)
- 实施药品全生命周期管理
- 网络安全风险防控机制
- 生活垃圾智能称重系统
- 《煤矿地质工作细则》矿安﹝2023﹞192号
- 超市库存管理制度
- 济南万科雪山万科城A11反交底
- 小学语文跨学科学习任务群的设计
- 土地整治设计占补平衡施工组织设计方案
- (word完整版)停工检查表
评论
0/150
提交评论