基于LUCENE的站内搜索引擎的设计
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
摘 要
LUCENE[1]是apache软件基金会jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,LUCENE的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。
作为一个开放源代码项目,LUCENE从问世之后,引发了开放源代码社群的巨大反响,程序员们不仅使用它构建具体的全文检索应用,而且将之集成到各种系统软件中去,以及构建Web应用,甚至某些商业软件也采用了LUCENE作为其内部全文检索子系统的核心。apache软件基金会的网站使用了LUCENE作为全文检索的引擎,IBM的开源软件eclipse的2.1版本中也采用了LUCENE作为帮助子系统的全文索引引擎,相应的IBM的商业软件Web Sphere中也采用了LUCENE。LUCENE以其开放源代码的特性、优异的索引结构、良好的系统架构获得了越来越多的应用。
这个系统的实际需求来源于本人在企业里实习时开发的2007世界特殊奥林匹克运动会官方网站,这个官方网站也使用了站内搜索引擎的功能,这个搜索引擎是我用LUCENE在.NET平台上实现的,现在网站运行稳定,站内搜索使整个网站的功能更加强大,为用户提供了更为便利的搜索功能。
本文对搜索引擎的原理、组成、数据结构、工作流程等方面做了深入而细致地研究与分析。并且通过LUCENE来设计和实现一个全文检索站内搜索引擎系统,最后通过增量索引和优化索引两个方面来说明如何提高LUCENE的高效性。 [来源:http://www.think58.com]
关键词: 全文检索,搜索引擎,LUCENE ,jakarta
课题目前研究情况及存在问题
目前有一些成熟的搜索引擎可以使用,但是都是用于商业,一般不公开源代码,学习起来比较困难,所以一些开源的项目成为设计时的首选,经过对搜索技术的研究,在Apache上发现了一个JAVA实现的用于搜索的开源项目LUCENE,LUCENE目前是公认的最好的搜索方面的开源项目之一,现在LUCENE已经成功的被移植到C,Perl、Python、C++、.NET及Ruby版本,所以其扩展性比较好,可以适用于大多数的平台,所以是开发站内搜索引擎的最理想的技术,但是目前存在若干问题:
1、因为实际项目需要Microsoft Visual Studio.NET平台,所以要将LUCENE移植到.NET平台上使用。
2、LUCENE默认是不支持中文搜索的,所以要通过扩展其API使其支持中文搜索以及实现基本的中文分词。
3、由于公司项目的具体需求,以后将会遇到多条件的搜索,以及搜索SQLSERVER数据库和联合多个目录进行的搜索问题。
4、出于网站的某些信息的保密性,要限制某些信息被搜索到,要考虑如何保护文件的私密性。
1.3论文组织结构
绪论部分介绍本系统的课题来源以及目前的研究情况和存在的问题。
第2章 介绍全文检索系统与LUCENE
第3章 介绍LUCENE系统结构
think58好,好think58
[来源:http://www.think58.com]
第4章 介绍本系统的设计与实现。
第5章 介绍系统开发过程应用到的几点关键技术。
总结部分介绍整个开发过程中的体会与认识,并指出目前系统中的不足和改进方向。
在附录部分附上了系统的部分实现代码,以供参考。
LUCENE简介
LUCENE不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。
LUCENE的作者:LUCENE的贡献者Doug Cutting是一位资深全文索引/检索专家,曾经是V-Twin搜索引擎(Apple的Copland操作系统的成就之一)的主要开发者,后在Excite担任高级系统架构设计师,目前从事于一些INTERNET底层架构的研究。他贡献出的LUCENE的目标是为各种中小型应用程序加入全文检索功能。
LUCENE的发展历程:早先发布在作者自己的www.LUCENE.com,后来发布在SourceForge,2001年年底成为APACHE基金会jakarta的一个子项目:http://jakarta.apache.org/LUCENE/
已经有很多Java项目都使用了LUCENE作为其后台的全文索引引擎,比较著名的有:
Jive:WEB论坛系统; Eyebrows:邮件列表HTML归档/浏览/查询系统,本文的主要参考文档“TheLUCENE search engine: Powerful, flexible, and free”作者就是EyeBrows系统的主要开发者之一,而EyeBrows已经成为目前APACHE项目的主要邮件列表归档系统。 Cocoon:基于XML的web发布框架,全文检索部分使用了LUCENE 。Eclipse:基于Java的开放开发平台,帮助部分的全文索引使用了LUCENE think58
对于中文用户来说,最关心的问题是其是否支持中文的全文检索。但通过后面对于LUCENE的结构的介绍,你会了解到由于LUCENE良好架构设计,对中文的支持只需对其语言词法分析接口进行扩展就能实现对中文检索的支持。 think58.com
2.4 LUCENE的应用、特点及优势
作为一个开放源代码项目,LUCENE从问世之后,引发了开放源代码社群的巨大反响,程序员们不仅使用它构建具体的全文检索应用,而且将之集成到各种系统软件中去,以及构建Web应用,甚至某些商业软件也采用了LUCENE作为其内部全文检索子系统的核心。apache软件基金会的网站使用了LUCENE作为全文检索的引擎,IBM的开源软件eclipse的2.1版本中也采用了LUCENE作为帮助子系统的全文索引引擎,相应的IBM的商业软件Web Sphere中也采用了LUCENE。LUCENE以其开放源代码的特性、优异的索引结构、良好的系统架构获得了越来越多的应用。
LUCENE作为一个全文检索引擎,其具有如下突出的优点:
1、索引文件格式独立于应用平台。LUCENE定义了一套以8位字节为基础的索引文件格式,使得兼容系统或者不同平台的应用能够共享建立的索引文件。
2、在传统全文检索引擎的倒排索引的基础上,实现了分块索引,能够针对新的文件建立小文件索引,提升索引速度。然后通过与原有索引的合并,达到优化的目的。
3、优秀的面向对象的系统架构,使得对于LUCENE扩展的学习难度降低,方便扩充新功能。
4、设计了独立于语言和文件格式的文本分析接口,索引器通过接受Token流完成索引文件的创立,用户扩展新的语言和文件格式,只需要实现文本分析的接口。 think58 [版权所有:http://think58.com]
5、已经默认实现了一套强大的查询引擎,用户无需自己编写代码即使系统可获得强大的查询能力,LUCENE的查询实现中默认实现了布尔操作、模糊查询(Fuzzy Search)、分组查询等等。
6 、LUCENE数据格式兼容性。即用Java LUCENE 生成的索引,能被C# 读出来,反之亦然
面对已经存在的商业全文检索引擎,LUCENE也具有相当的优势。首先,它的开发源代码发行方式(遵守Apache Software License),在此基础上程序员不仅仅可以充分的利用LUCENE所提供的强大功能,而且可以深入细致的学习到全文检索引擎制作技术和面相对象编程的实践,进而在此基础上根据应用的实际情况编写出更好的更适合当前应用的全文检索引擎。在这一点上,商业软件的灵活性远远不及LUCENE。其次,LUCENE秉承了开放源代码一贯的架构优良的优势,设计了一个合理而极具扩充能力的面向对象架构,程序员可以在LUCENE的基础上扩充各种功能,比如扩充中文处理能力,从文本扩充到HTML、PDF等等文本格式的处理,编写这些扩展的功能不仅仅不复杂,而且由于LUCENE恰当合理的对系统设备做了程序上的抽象,扩展的功能也能轻易的达到跨平台的能力。最后,转移到apache软件基金会后,借助于apache软件基金会的网络平台,程序员可以方便的和开发者、其它程序员交流,促成资源的共享,甚至直接获得已经编写完备的扩充功能。最后,虽然LUCENE使用Java语言写成,但是开放源代码社区的程序员正在不懈的将之使用各种传统语言实现(例如.net framework),在遵守LUCENE索引文件格式的基础上,使得LUCENE能够运行在各种各样的平台上,系统管理员可以根据当前的平台适合的语言来合理的选择。
copyright think58
[来源:http://think58.com]