搜索引擎设计学士学位论文.docx
- 文档编号:11513601
- 上传时间:2023-03-02
- 格式:DOCX
- 页数:59
- 大小:863.09KB
搜索引擎设计学士学位论文.docx
《搜索引擎设计学士学位论文.docx》由会员分享,可在线阅读,更多相关《搜索引擎设计学士学位论文.docx(59页珍藏版)》请在冰豆网上搜索。
搜索引擎设计学士学位论文
摘要
随着互联网的迅速发展,网络规模不断扩大,信息储量急剧增长,搜索引擎技术越来越得到广泛地使用。
本文通过对各种通用搜索引擎的关键技术进行研究,完成了对通用WEB搜索引擎的设计与实现。
搜索引擎系统包括3个功能模块:
网页获取模块,数据存储模块和检索模块。
本人在课题组中主要承担工作有:
系统整体设计、数据库的设计实现以及中文分词系统的设计实现。
本系统的整体设计突出操作简便、功能强大、人性化设置、并行处理可移植等特点,其中中文分词,各模块的存储流程是系统的设计亮点。
本文中对搜索引擎的各种技术算法进行了介绍,而且根据系统的需要进行了各功能模块的设计。
数据库设计的特点是:
大容量存储、高效检索和简单查询。
索引数据库以页面信息表和词库表为核心,通过对词创建索引以提高检索效率;中文分词系统采用JDK平台开发,实现对中英文句子的分割,使其分为单独的词或词组。
关键词:
搜索引擎;WEB搜索;中文分词;索引数据库;排序。
Abstract
Withtherapiddevelopmentoftheinternet,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;Arranges
1绪论
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,并重复上述过程,直到遍历完所有链接时停止。
另外,所有被爬虫抓取的网页将会被存储到数据库当中,进行一定的分析、过滤,并建立索引,以便之后的查询和检索。
图2.1JSpider工作原理
2.2Java、JSP和Android介绍
2.2.1Java介绍
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE,JavaEE,JavaME)的总称。
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的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。
随着互联网web2.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,在针对web2.0的交互频繁的应用,Cache性能不高。
而NoSQL的Cache是记录级的,是一种细粒度的Cache,所以NoSQL在这个层面上来说就要性能高很多了。
(3)灵活的数据模型
NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。
而在关系数据库里,增删字段是一件非常麻烦的事情。
如果是非常大数据量的表,增加字段简直就是一个噩梦。
这点在大数据量的web2.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的应用程序的开发变得迅速和容易。
JSP(JavaServerPages)是一种动态页面技术,它的主要目的是将表示逻辑从
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 搜索引擎 设计 学士学位 论文