基于Lucene的全文搜索引擎设计.docx
- 文档编号:4100507
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:20
- 大小:390.79KB
基于Lucene的全文搜索引擎设计.docx
《基于Lucene的全文搜索引擎设计.docx》由会员分享,可在线阅读,更多相关《基于Lucene的全文搜索引擎设计.docx(20页珍藏版)》请在冰豆网上搜索。
基于Lucene的全文搜索引擎设计
基于Lucene的搜索引擎
作者姓名:
王旭专业班级:
2010050704指导教师:
涂德志
摘要
从1994年至今,万维网经过了二十年的飞速发展,当前的万维网数据规模到底有多大无从估量。
随着网络信息资源的急剧增长,现如今,信息已经不再是一种稀缺的资源,我们的注意力反而变得稀缺了。
人们越来越多地关注如何快速有效地从海量的网络信息中,抽取出潜在的、有价值的信息,使之有效地在管理和决策中发挥作用。
搜索引擎提供了一种便捷的获取网络信息的途径,只要你能在电脑上打字,那么你就能通过“输入关键字+自行浏览”的用户交互方式快速查找到自己感兴趣的资源。
目前Web搜索引擎(SearchEngine)技术正成为计算机科学界和信息产业界争相研究、开发的对象。
搜索引擎是指互联网上一种提供用户查询的一类应用。
通过人工目录整理或者是网络爬虫收集互联网上已经存在的网页,在用户输入查询词后,将相关网页迅速展现给用户。
用户自行浏览后选择最合适期望的链接,进入查看。
关键词:
网络信息资源Web搜索引擎查询
ABSTRACT
Since1994,theWorldWideWebaftertwodecadesofrapiddevelopment,howmuchthecurrentsizeoftheWorldWideWebisincalculable.Withtherapidgrowthofnetworkinformationresources,nowadays,theinformationisnolongerascarceresource,however,ourattentionbecamescarce.moreandmoreconcernedabouthowquicklyandefficientlyfromthevastamountsofnetworkinformation,toextractpotentiallyvaluableinformationtoeffectivelyplayaroleinthemanagementanddecision-making.Searchenginesprovideaconvenientwaytoobtainnetworkinformation,aslongasyoucantypeonacomputer,thenyoucanthroughthemode:
"keywords+browse",toquicklyfindtheresourcesyouareinterested.CurrentlyWebsearchengine(SearchEngine)technologyisbecomingthetargetcomputerscienceandinformationindustrycompeteondevelopment.
SearchengineontheInternetreferstoamethodofprovidingauserqueriesaclassofapplications.SortingthroughartificialcatalogorwebcrawlerstocollectWebpagesontheInternetalreadyexist,aftertheuserentersthequerywords,therelevantpagesquicklypresentedtotheuser.Choosethemostappropriatelink,browsethedesiredpostintoview.
Keywords:
NetworkInformationResourcesWebSearchEngineConsult
第1章前言
1.1搜索引擎的学术背景与实际意义
万维网是互联网最主要的组成部分,也是人们获取网络信息的最主要的来源。
1994年,蒂姆·伯纳斯·李创立万维网联盟(WorldWideWebConsortium,http:
//www.w3.org),在万维网的整体构架中,通用资源标识符、超文本标记语言和超文本传输协议这三个元素是万维网的核心,缺一不可。
再随后的几十年当中,由于万维网的开放性和其上信息广泛的可访问性,不出意料的成为了互联网的霸主。
目前,是以网页为主的互联网时代,以Web网页为对象的搜索引擎检索系统相继产生了,搜索引擎成为人们上网找寻信息的重要手段,搜索引擎的产生,使得人们能够快速的从互联网找到与自己需求相关的网页链接。
人工智能、数据挖掘的进一步研究以及现在网页的特性使得搜索引擎技术进一步发展,在搜索后,甚至还有意料之外的收获。
2008年,Google在其官方博客上称,仅其页面搜索量就已经高达1万亿个网页,而且现在互联网上的网页数每天都有数以万计的数量增长。
Yahoo是出现最早的目录式搜索引擎,全文搜索引擎Google的出现得到了广大网民的认可,并迅速占领了全球市场,到现今国内的如Baidu、新浪爱问、腾讯搜搜、Sogou等,搜索引擎的品牌愈来愈多,服务也越来越丰富。
同时,伴随着Web2.0的普及,网络信息的膨胀速度呈指数急速增长,各种各样的网站都需要为其加入检索功能,以满足用户的需要。
另外,在企业级应用的市场上,全文信息检索的需求也一直在增加,各种文档处理、内容管理软件都需要键入全文检索的功能。
目前,搜索引擎已经不仅仅是采集网页中已经存在的信息并提供给用户访问的工具,它正朝着组建一个大的社区方向发展。
Google是目前不可争议的第一大搜索引擎,在这个社区里你可以浏览新闻、地图查看、浏览新闻、收发邮件、翻译你想要翻译的外文文献以及搜索你想要浏览的网页等等。
另外,如大家比较熟悉的XX,相继开发的XX百科、XX知道、XX贴吧、XX文库等一系列的社区功能,也吸引了大量用户。
搜索引擎构建的社区正在慢慢的融入人们的生活与学习。
1.2国内外文献综述
搜索引擎,又称搜索机,Web搜索器,是伴随WWW网络出现的检索网上信息资源的新工具,实质上是一种网页网址检索系统。
根据查询方式的不同,搜索引擎也有不同的分类,它们有的提供分类和关键词检索途径,有的仅提供关键词检索途径。
提供关键词检索是通过主要由Crawler、Spider、Worm、Robot等计算机软件程序不停地、尽可能广的在互联网上漫游,搜索到网页,然后自动给网页上的某些或全部字符做上索引,形成目标摘要格式文件以及网络可访问的数据库,供人们检索网络信息的检索工具。
网络目录则是和搜索引擎完全不同,它没有不停的为收集信息而工作的“网络蜘蛛”,而是由专业人员谨慎地选择网站的首页,并将其放入自己网站相应的分类类目中,因此,这种模式下,大多数的网页是不能被访问到的。
网络目录中的分类网站是人工整理的,网页质量高,但其跟新速度慢,有限的覆盖范围使得用户还是跟倾向与使用后者。
到目前,成功的搜索引擎系统也很多,如Yahoo,Google,baidu等。
从最开始的人工目录分类,到关键词检索,全文检索,搜索引擎的发展。
搜索引擎能够实现的功能也多样化。
除了传统的从互联网上收集网页信息,各大引擎还加入了自己独特的功能。
包括如Google翻译,地图,XX文库,XX贴吧等。
除了各大搜索引擎大佬,还有众多的搜索引擎活跃在互联网舞台上。
目前,搜索引擎市场上流行的是不分用户对象的搜索引擎,独辟蹊径,开发针对特殊群体的搜索引擎,近几年也笼络了不少的用户。
如针对儿童的美国ASK网站网站编辑团队组织开发的。
同样的,也有面向老人的,病人的一系列的搜索引擎。
1.3课题来源及主要研究内容
课题来自于指导老师意见,几经思考,最终由本人自拟。
到现在,B/S结构的应用已经占据了软件开发中的大半江山,从大一学C++,到QT“退伍”,再到学习JavaWeb开发,通过几年的努力,基本掌握了Web开发技术。
同时,对于互联网上大量页面的检索及结果排序也产生了浓厚的兴趣。
此次课题类型为应用软件开发,一个基于Lucene全文检索引擎工具包的搜索引擎。
根据自己在校期间多次实践开发经验,采用MyEclipse集成开发环境,SQLSever2005数据库。
它具有以下特点:
支持桌面文件搜索,格式包括txt、doc、xls和ppt;支持分词查询;支持全文搜索;能够高亮显示搜索关键字;显示查询所用的时间;显示搜索历史、过滤关键字。
第2章相关技术介绍
2.1JSP与Tomcat
HTMl页面时静态页面,写好后,由浏览器执行。
HTML语法不支持动态显示,及在HTMl页面中,不能访问数据库和对数据加工处理。
随着网页类型的多元化,现如今,单纯的静态网页已经不能满足用户的需求。
HTML不能处理访问数据库数据,Java代码却能访问数据库。
在HTML代码中混入Java代码的一种技术就是JSP(JavaSeverPages)。
JSP页面的Java代码在服务器端执行,执行生成HTML页面返回给客户端。
因此,在一个采用JSP技术的项目中,服务器的选择也是必须的。
Tomcat是Sun的JSWDK(JavaServerWebDevelopmentKit)中的Servlet容器,由Apache、Sun和其他一些公司和个人共同开发而成。
Tomcat既是一个开放源码、免费支持JSP和Servlet技术的容器,同时又是一个Web服务器软件,受到了Sun公司的大力推荐和支持。
因此,Servlet和JSP的最新规范都可以在Tomcat的新版本中得到实现。
Tomcat是一个小型的轻量级应用服务器,运行时占用系统资源少、扩展性好、支持负载平衡与邮件服务器等开发应用系统中的常用功能,并且不断改进和改善。
先进的技术、稳定的性能、源码开放和免费获取的机制,使得Tomcat深受Java爱好者的喜爱并得到许多开发商的认可,曾为目前相当流行的Web应用服务器。
2.2SQLSever数据库
MicrosoftSQLServer2005是一个全面的数据库平台,使用集成的商业智能(BI)工具提供了企业级的数据管理。
MicrosoftSQLServer2005数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,可以构建和管理用于业务的高可用和高性能的数据应用程序。
2.3Ajax简介
Ajax是一种Web应用客户端技术,它结合了JavaScript、CSS、HTML、XMLHttpRequest对象和文档对象模型(DOM)等多种技术。
它允许把用户和Web页面间的交互与Web浏览器和服务器间的通信分开来。
在传统的Web应用中,用户提交表单实际上就是向服务器发送一个请求,服务器接受数据并处理,最终返回一个新的网页。
如果传输的数据量比较大,用户能够明显的看到在页面上显示的效果就是,整个页面都将刷新一次,在刷新的过程中,用户只能等待,而这,无疑是一项很不好的用户体验。
在Ajax技术中,当提交表单时,数据首先被转交给Ajax引擎的中间层,然后由中间层负责发送给服务器端程序,处理完成后,再将相应发回给Ajax引擎的中间层,并通过Ajax引擎的中间层将数据返回给客户端界面显示出来。
如此,充分利用了客户端闲置的处理能力,减轻服务器负担,节省带宽,也提高了用户体验。
2.4Lucene介绍
Lucene是apache软件基金会4jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构。
Lucene结构和源码组织结构如图2-1:
图2-1Lucene结构和源码组织结构
Lucene的核心工包括7个子包,每个包完成特定的功能。
最基本的是索引管理和检索管理。
往Lucene中放的是文档,查询的是词,查询返回的也是文档。
索引是信息检索引擎工作的第一步,只有建立了索引才能进行信息检索。
Lucene用Document逻辑文件和Field域来组织各种数据源。
Document向Lucene提供原始的要索引的文本内容,Lucene从Document中取出相关的数据源,并根据属性配置进行相应的处理,建立索引。
索引过程如下:
(1) 创建一个IndexWriter用来写索引文件,它有几个参数,INDEX_DIR就是索引文件所存放的位置,Analyzer便是用来对文档进行词法分析和语言处理的。
(2) 创建一个Document代表我们要索引的文档。
(3) 将不同的Field加入到文档中。
我们知道,一篇文档有多种信息,如题目,作者,修改时间,内容等,不同类型的信息用不同的Field来表示。
(4)IndexWriter调用函数addDocument将索引写到索引文件夹中。
Lucene建立了功能强大的索引机制为搜索服务,这是因为在检索系统的使用中,用户体验最深的还是搜索部分。
如果这一部分的性能无法达到用户要求,那么软件就没有太大的意义。
搜索过程如下:
(1) IndexReader将磁盘上的索引信息读入到内存,INDEX_DIR就是索引文件存放的位置。
(2) 创建IndexSearcher准备进行搜索。
(3) 创建Analyer用来对查询语句进行词法分析和语言处理。
(4) 创建QueryParser用来对查询语句进行语法分析。
(5) QueryParser调用parser进行语法分析,形成查询语法树,放到Query中。
(6) IndexSearcher调用search对查询语法树Query进行搜索,得到查询结果存放在TopScoreDocCollector。
由于Lucene自带的分词器对英文的分词效果较好,但对中文的分词效果并不如意。
为了使检索系统能更好的处理中文信息,本文采用了IKAnalyzer作为分词器。
IK Analyzer是一个开源的,基于java 语言开发的轻量级的中文分词工具包。
第3章搜索引擎原理
3.1搜索引擎体系结构
根据XX百科的定义,体系结构包括一组部件及部件之间的联系。
对于搜索引擎而言,其体系结构是指为搜索引擎运行而设置的软硬件系统,以及软硬件系统之间相互联系的总和。
为了容纳万维网以爆炸式增长的数据,各大搜索引擎都是用规模浩繁的计算机集群系统对这些大量的数据加以存储和处理。
如图3-1所示的Google在美国俄勒岗达拉斯附近的数据中心,有图可以看出,整个数据中心由3个巨大的集群机房组成,其中每个机房占地面积都超过一个标准足球场的大小。
图3-1美国俄勒岗达拉斯附近的数据中心
搜索引擎按其工作方式主要可分为三种,分别是全文搜索引擎(FullTextSearchEngine)、目录索引类搜索引擎(SearchIndex/Directory)和元搜索引擎(MetaSearchEngine)。
全文搜索引擎最具代表性的如Google,国内的有XX,搜搜等。
全文搜索引擎是真正的搜索引擎,简单的操作方式,广泛的搜索范围,始一出现就得到了广大网名的认可,并在很大程度上取代了目录式索引类网站。
目录索引算是互联网上出现的最早的索引,大名鼎鼎的Yahoo雅虎便是其中之一,国内的搜狐、新浪、网易搜索也都属于这一类。
目录索引虽然有搜索功能,但在严格意义上算不上是真正的搜索引擎。
网络信息日新月异的变更,人们总是期望挑出最新的信息,人工的组织连接分类既不能在覆盖度上满足用户搜索需求,也使得互联网的信息与现实信息之间存在一定时间差。
元搜索引擎在接受用户查询请求时,同时在其他多个引擎上进行搜索,并将结果返回给用户。
中文元搜索引擎中具代表性的有搜星搜索引擎。
在搜索结果排列方面,有的直接按来源引擎排列搜索结果,有的则按自定的规则将结果重新排列组合。
3.2搜索引擎主要模块功能介绍
图3-2搜索引擎基本组成
如图3-2所示,搜索器(Crawler)、索引器(Indexer)、检索器(Searcher)和用户接口(Ul)等四个部分组成了一个完整的的搜索引擎程序,页面存储器(Repository)和存储桶(Barrel)两部分组成存储设备。
3.2.1搜索器(Crawler)
搜索器的功能是在互联网中漫游,及时、高效地收集数量尽可能多的有用的Web网页,以及建立他们之间的超链接关系。
它在整个搜索引擎系统中承担着与互联网数据进行交互的任务。
搜索器的主要功能就是漫游整个互联网,以一个超链接为起始点,尽可能广和深的遍历网页上的其它连接,存储找到的新的网页,和跟新已经存在的文档内容。
目前有搜集信息的策略:
深度优先算法是搜索引擎发展早期广泛采取的一种信息收集策略,这种算法的优点就是能够尽可能多的遍历到互联网上的所有信息。
广度优先策略与深度优先策略类似,只是前者是以网页中的一个连接为起点,尽量多的网下漫游,广度优先则是遍历网页中的所有超链接再网下漫游。
然而,互联网上很多的网页在很多时候都不是被大量用户所访问的,一味最求可访问量并不能带来很好的用户体验。
目前的商用搜索引擎中,还包括反向链接数策略、局部PageRank策略、网页的重访策略等。
搜索器的实现常常用分布式、并行计算技术,以提高信息发现和更新的速度。
商业搜索引擎的信息发现可以达到每天几百万网页。
然而我们知道,不同类型的网络数据,其更新频率有很大的差距。
更新频率很高的,跟新周期以分钟甚至秒来计算,如:
新闻网站,天气情况股票指数等。
跟新频率相对比较高的,几个小时到几天不等周期的,例如大家的博客,空间,以及学校公共主页等。
面对差异如此大的更新频率,对每一个网页采取同样的更新策略无疑会浪费大量的资源,甚至不能保持搜索引擎数据与万维网数据的同步。
为此,搜索引擎往往采用不同的抓取更新频率的方法,保证数据集合总体的新鲜度维持在一个较高水平。
3.2.2索引器(Indexer)
搜索器搜索到的海量数据,搜索引擎如何管理这些海量的数据?
索引器的主要功能就是对海量的网页内容,从中抽取出索引项,用于表示文档以及生成文档库的索引表,实现快速查找包含用户关键字的网页。
搜索引擎的索引实际上就是一种单词-文档数据结构。
倒排索引是搜索引擎最常用的单词到文档的一种实现方式。
在搜索引擎内部,会为每个文档和单词(关键字)赋予一个唯一的ID,在倒排表中,实际存储的就是单词编号和文档编号。
索引表也要记录索引项在文档中出现的位置,以便检索器计算索引项之间的相邻或接近关系(proximity)。
如表3-1。
表3-1倒排索引结构图
Term1
Doc11Pos1
Doc11Pos2
…
Doc11Posq
Doc12Pos1
…
Term2
Doc2Pos1
Doc21Pos2
…
Doc21Posq
Doc22Pos1
…
…
…
…
…
..
…
…
Term
DocN1Pos1
DocN1PosN
..
DocN1Posq
DocN2Pos1
…
Termi表示一个词项,i表示词项的编号。
Docij表示一个文档,也就是一个文档,对应的上下标j、i表示包含第i个词项的第j个文档。
Pos表示词项在对应文档中第k次出现的位置信息。
3.2.3检索器(Searcher)
检索器的功能是根据用户的查询,对将要输出的结果进行排序。
检索结果的排序依据主要包括页面内容的相似程度、网页质量评估、用户偏好情况等。
检索器的主要任务就是通过文本信息检索模型来计算用户输入查询词与系统索引页面的内容相关程度,语言模型是搜索引擎文本信息检索模型中最常用的一种。
对网页进行排序,只考虑页面的内容相关程度是不够的,网页数据的质量也影响排序结果,一般来说,权威性比较高的网站更能得到搜索引擎的青睐。
现如今的商用搜索引擎更能够根据的用户的搜索习惯给出相应的排序结果,获得更好的用户体验。
3.2.4用户接口((UserInterface)
打开搜索引擎引用,首先看到的便是简洁的用户接口界面。
用户接口的作用是输入用户查询、显示查询结果、提供用户相关性反馈机制。
主要的目的是方便用户使用搜索引擎,高效率、多方式地从搜索引擎中得到有效、及时的信息。
用户接口的设计直接关系到用户的切身感受,是用户心理、地方习惯、行业传统的一个具体体现,良好的界面设计往往能够为你带来更多的用户。
第4章系统分析
4.1需求分析
互联网上的资源越来越多,高效、快捷的从互联网上查找需要的资源对于无论是在工作还是生活中都变得举足轻重。
通过对搜索引擎以及结合Lucene自身的特定,制定本次设计需要实现的功能,开发个基于Lucene的搜索引擎,它具有一下特点:
Ø支持桌面文件搜索,格式包括txt、doc、xls和ppt;
Ø支持分词查询
Ø支持全文搜索
Ø能够高亮显示搜索关键字
Ø显示查询所用的时间
Ø显示搜索历史、过滤关键字
其中分词和全文搜索都可以结合Lucene提供的类库以及相关算法实现,而关键字高亮度显示只需要借助Highlighter的帮助,通过数据库持久化保存数据。
4.2系统可行性分析
可行性作为整个项目中的第一步,涉及很多方面,以确定项目开发是否有意义,是否可以在规定时间内完成项目开发。
4.2.1社会可行性分析
互联网的迅速发展,当前,每天新增加的网页都是一个巨大的数字。
当前的搜索引擎只能抓取、捕捉一小部分的网页,这就是所谓的“visible”或“indexable”。
大量的科学知识和其他有价值的信息被挡在门后(未被搜索引擎的爬虫网络访问到)。
显而易见,不可见和深度网页的数量是先可搜索的网页大小的数倍大。
而且网页内容的质量亦变得良莠不齐,没有保证。
所以,未来搜索引擎的高速发展将持续保持。
4.2.2技术可行性分析
Lucene是一套用于全文检索和搜寻的开源程式库,能够做全文索引和搜寻,在Java开发环境里Lucene是一个成熟的免费开源工具。
MyEclipse开发平台也提供了强大的集成功能,能够在上面集成最新版本的JDK环境,和配置Tomcat服务器。
再结合大学几年所学习的软件工程方面的知识,对多种参考资料的查阅,对搜索引擎技术的了解,以及指导老师的帮助,在这些前提下,本应用的技术可行性是通过的。
4.2.3经济可行性分析
如前文所述,搜索引擎已经成为了人们生活的一部分,现如今,通过互联网上网的人,几乎没有不用到搜索引擎的。
在信息量越来越大的今天,各大网站也几乎都有自己的搜索栏,如果搜索引擎能够更多更有效的抓取网站内容,那么对于网站的好处是不言而喻的。
第5章总体设计
5.1系统构架
系统的大概设计构架,如图5-1所示:
图5-1系统总体架构
以下是对架构设计的叙述:
5.1.1索引建立子系统
要设计索引建立子系统,必须要了解索引建立过程,领域模型中已经可以看出此子系统的大概框架。
网络爬虫从互联网上获得大量的文档,索引程序将这些大量的数据进行压缩,从中抽取出索引项,建立单词-文档数据模型。
索引建立是本系统的核心,良好的索引子系统创建直接关系到搜索结果内容排序和搜索时间的多少。
5.1.2用户接口子系统
用户接口子系统是主要与用户进行交互的部分,也是搜索引擎中用户能够唯一在视觉上感受到的一部分。
Ajax的异步提交,实现局部数据传输,返回用户需要的的数据,节省了用户的等待时间,也大大降低了服务器和客户端交互量、节省带宽。
5.2数据库设计
合理的数据库设计可以提升业务逻辑的处理,提高软件效率,并且对
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Lucene 全文 搜索引擎 设计