当前位置:文档之家› 全文搜索引擎的设计与实现(文献综述)

全文搜索引擎的设计与实现(文献综述)

全文搜索引擎的设计与实现前言面对海量的数字化信息,搜索引擎技术帮助我们在其中发现有价值的信息与资源。

我们可以通过google、百度这样的搜索引擎服务提供商帮助我们在Internet上搜索我们需要的信息。

但是在一些没有或不便于连入Internet的内部网络或者是拥有海量数据存储的主机,想要通过搜索来发现有价值的信息和资源却不太容易。

所以开发一个小型全文搜索引擎,实现以上两种情况下的信息高效检索是十分有必要的。

本设计着眼于全文搜索引擎的设计与实现,利用Java ee结合Struts,Spring,Hibernates以及Ajax等框架技术,实现基于apache软件基金会开源搜索引擎框架Lucene下的一个全文搜索引擎。

正文搜索引擎技术起源1990年,蒙特利尔大学学生Alan Emtage、Peter Deutsch和Bill Wheelan出于个人兴趣,发明了用于检索、查询分布在各个FTP主机中的文件Archie,当时他们的目的仅仅是为了在查询文件时的方便,他们未曾预料到他们的这一创造会成就日后互联网最的广阔市场,他们发明的小程序将进化成网络时代不可或缺的工具——搜索引擎。

1991年,在美国CERFnet、PSInet及Alternet网络组成了CIEA (商用Internet协会)宣布用户可以把它们的Internet子网用于商业用途,开始了Internet商业化的序幕。

商业化意味着互联网技术不再为科研和军事领域独享,商业化意味着有更多人可以接触互联网,商业化更意味着潜在的市场和巨大的商机。

1994年,Michael Mauldin推出了最早的现代意义上的搜索引擎Lycos,互联网进入了搜索技术的应用和搜索引擎快速发展时期。

以上是国际互联网和搜索引擎发展历史上的几个重要日子。

互联网从出现至今不过15年左右时间,搜索引擎商业化运作也就10年左右。

就在这短短的10年时间里,互联网发生了翻天覆地的变化,呈爆炸性增长。

于此同时也成就了google、百度这样的互联网巨头。

今天,当我们想要在这片广阔的信息海洋中及时获得想要查找的信息时,已经离不开搜索引擎了。

相关技术1.Lucene谈到搜索引擎除了google、百度这些互联网巨头,在开源界也有很好的全文检索引擎的架构——Lucene。

Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。

Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。

作为一个开放源代码项目,Lucene从问世之后,引发了开放源代码社群的巨大反响,程序员们不仅使用它构建具体的全文检索应用,而且将之集成到各种系统软件中去,以及构建Web应用,甚至某些商业软件也采用了Lucene作为其内部全文检索子系统的核心。

apache软件基金会的网站使用了Lucene作为全文检索的引擎,IBM的开源软件eclipse的2.1版本中也开始采用了Lucene作为帮助子系统的全文索引引擎,相应的IBM的商业软件Web Sphere中也采用了Lucene。

Lucene以其开放源代码的特性、优异的索引结构、良好的系统架构获得了越来越多的应用。

Lucene是一个高性能、可伸缩的信息搜索(IR)库。

它使你可以为你的应用程序添加索引和搜索能力。

Lucene是用java实现的成熟的、免费的开源项目,是著名的Apache Jakarta大家庭的一员,并且基于在Apache软件许可[ASF, License]。

同样,Lucene 是当前与近几年内非常流行的免费的Java信息搜索(IR)库。

Lucene作为一个全文检索引擎,其具有如下突出的优点:(1)索引文件格式独立于应用平台。

Lucene定义了一套以8位字节为基础的索引文件格式,使得兼容系统或者不同平台的应用能够共享建立的索引文件。

(2)在传统全文检索引擎的倒排索引的基础上,实现了分块索引,能够针对新的文件建立小文件索引,提升索引速度。

然后通过与原有索引的合并,达到优化的目的。

(3)优秀的面向对象的系统架构,使得对于Lucene扩展的学习难度降低,方便扩充新功能。

(4)设计了独立于语言和文件格式的文本分析接口,索引器通过接受Token流完成索引文件的创立,用户扩展新的语言和文件格式,只需要实现文本分析的接口。

(5)已经默认实现了一套强大的查询引擎,用户无需自己编写代码即使系统可获得强大的查询能力,Lucene的查询实现中默认实现了布尔操作、模糊查询(Fuzzy Search[11])、分组查询等等。

2.Java EEJava EE(Java Platform,Enterprise Edition)是sun公司推出的企业级应用程序版本。

这个版本以前称为J2EE。

能够为我们帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java 应用程序。

Java EE 是在Java SE 的基础上构建的,它提供Web 服务、组件模型、管理和通信API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和Web 2.0 应用程序。

Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。

用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。

从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。

3.Struts2Struts2为服务于Web的一种MVC框架, 是在struts 和WebWork的技术基础上进行了合并的全新的MVC框架。

Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开。

4.HibernateHibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。

Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP 的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

5.SpringSpring是一个开源框架,是为了解决企业应用程序开发复杂性由Rod Johnson创建的。

框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为J2EE 应用程序开发提供集成的框架。

Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。

然而,Spring的用途不仅限于服务器端的开发。

从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。

然而,Spring的用途不仅限于服务器端的开发。

从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

6.Ajax(Asynchronous JavaScript And XM)AJAX 不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的Web 应用程序的技术。

通过AJAX,JavaScript 可使用JavaScript 的XMLHttpRequest 对象来直接与服务器进行通信。

通过这个对象,您的JavaScript 可在不重载页面的情况与Web 服务器交换数据。

AJAX 在浏览器与Web 服务器之间使用异步数据传输(HTTP 请求),这样就可使网页从服务器请求少量的信息,而不是整个页面。

AJAX 是一种独立于Web 服务器软件的浏览器技术。

AJAX 基于下列Web 标准:JavaScript XML HTML CSS 在AJAX 中使用的Web 标准已被良好定义,并被所有的主流浏览器支持。

AJAX 应用程序独立于浏览器和平台。

Web 应用程序较桌面应用程序有诸多优势;它们能够涉及广大的用户,它们更易安装及维护,也更易开发。

通过AJAX,因特网应用程序可以变得更完善,更友好。

7.TomcatTomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。

Tomcat 是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。

实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

总结全文搜索引擎已经成为人们在信息化时代中检索信息不可缺少的工具。

本设计将lucene这一开源的搜索引擎框架,结合Java Web开发流行的SSH、Ajax等技术,实现一个可以在小型局域网或海量文件存储的主机上进行数据检索的引擎。

并且通过Spring可以实现灵活的配置。

为无法使用互连网搜索引擎下的海量数据检索,提供了一个很好的解决方案。

参考文献[1] (美)Otis Gospodnetic Erik Hatcher 编著,谭鸿、黎俊鸿、周鹏、高承山译,.Lucenein Action中文版.电子工业出版社. 2007-01[2]张思民,Java开发技术与工程实践.清华大学出版社.2010-11[3]邱哲、符滔滔、王学松编著.开发自己的搜索引擎---Lucene+Heritrix(第2版).人民邮电出版社.2010-1-1[4]李刚,轻量级Java EE企业应用实战(第3版).电子工业出版社. 2011-3-1[5](英)Jeremy Keith编著,杨涛王建桥杨晓云译,JavaScript DOM编程艺术.人民邮电出版社.2007-01[6] (美) Bruce Eckel编著,陈昊鹏译, Java编程思想(第4版) .机械工业出版社.2007-06[7] (美)梅特斯克、(美)韦克著,龚波、赵彩、陈蓓译, Java设计模式.人民邮电出版社. 2007-03[8]张思民编著, Java语言程序设计.清华大学出版社.2007.2.。

相关主题