基于Lucene的网站全文搜索的设计与实现.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
科技情报开发与经济
文章编号:1005-6033(2005)15-0242-03
SCI/TECHINFORMATIONDEVELOPMENT&ECONOMY2005年第15卷第15期
收稿日期:2005-06-03
基于Lucene的网站全文搜索的设计与实现
陈庆伟1,刘
军2
(1.山西省网络管理中心,山西太原,030001;2.山西省科技情报研究所,山西太原,030001)摘要:Lucene是一个基于Java技术的开放源代码全文索引引擎工具包,它可以方便
地嵌入到各种应用中实现针对应用的全文索引/检索功能。利用Lucene的API可以比较方便地为一个网站提供全文搜索功能。探讨了如何使用Lucene建造一个通用的Web站点全文搜索工具,并对在构建系统中应注意的若干问题进行了探讨。关键词:全文搜索;Lucene;Java中图分类号:TP393.07文献标识码:A
在构建一个信息类Web站点的时候,站点的全文搜索功能是必备的功能之一。一般站点的信息内容都存储在各种数据库系统中,并使用数据库提供的检索和查询功能构建网站的搜索功能。但随着信息的累‘%keyword%’查询构成的数据检索性能将积,使用数据库中的类似like急剧下降,因此,只使用数据库查询进行全文检索并不是一个好的解决它可以方便方案。Lucene是一个基于Java技术的全文索引引擎工具包,
地嵌入到各种应用中实现针对应用的全文索引/检索功能。例如Lucene可以快速实现一个简单、功能强大的数据全文检索系统。
PDFWord
XSLT
格式化
各种输出
Text
XML输出
XML格式
XML中间格式
DBLuceneDB
1设计目标
全文检索系统的主要功能就是为信息资料提供全文索引和查询。对
其他
专业格式
图1
接口的实现示意图
于一个以提供信息资料为主要目的网站来说,网站的全文检索系统是必备功能之一。但对于小型的信息网站来说,购置全文检索系统的代价经‘keyword’查询来代替全文检索常是昂贵的。如果只使用数据库的Like
系统,其性能又往往达不到要求,甚至影响数据库的其他正常使用。而使也会遇用其他大型搜索引擎的站内搜索(例如google提供的站内搜索)到更新慢、数据不准确、无法控制输出格式等情况。
那么能不能自己实现一个适用的全文搜索引擎呢?答案是肯定的。这就是利用开放源代码的搜索引擎工具包Lucene来构成自己的全文搜索引擎,它富有弹性的软件架构可以使我们方便地对其功能进行扩充,以快速实现一个通用网站的全文搜索引擎。这样一个通用的网站搜索引擎可以达到下面的设计目标:
其一,为各种类型的原始文档提供一个适当的包装,以方便搜索引擎对其内容进行索引和存储,这些类型包括Database记录、文本文档、Word/Excel文档、PDF文档以及其他专用的格式文档。
其二,提供内容爬行程序以便可以对不同来源的内容进行索引,其Web页面、文件系统等。主要的数据来源包括数据库表、
其三,提供一个统一的中间输出格式以便对检索结果进行不同的处理和显示。
其四,提供相关词检索,方便用户更有效地查询信息。
从原始文档提取这些属性作为索引文档的共同属性。2.2系统结构
根据上面所讨论的系统设计目标,一个通用的网站全文搜索引擎的整个系统由5个大的模块构成:结构如图2所示,
文档抽取模块Word
XLMPDF
Test
文档过滤模块中
文分词
关键字过滤
噪音词过滤
系统配置管理
文档处理流水线
文档适配器数据源爬行器
标准数据交换层
2
2.1
系统实现
接口设计
从上面的设计目标我们可以看到,系统的数据来源是多样的,同时
索
引模块
全文检索核心引擎多引擎处理模块LuceneAPI
LuceneAPI
查询模块
输出模块XML格式数据XSLT引擎
其输出形式也是多样的。这使我们很容易想到使用XML作为数据的中间格式:所有来自数据源爬行程序的数据转化为XML格式的中间数据,这些中间数据
进行进一步的格式化,产生更一致的XML数据结构(例如title和subject元素都统一描述为title,作为文档的标题),最后,这些XML数据进入Lucene引擎进行索引;而数据的输出则可以通过对XML数据的不同格式化处理而实现。接口的实现如图1所示。
其中,右边的文档属性列表是每个索引文档统一的属性,应该尽量
LuceneDB
LuceneDB
图2通用网站全文搜索引擎结构示意图
一是多引擎处理模块。核心引擎的主要工作是管理文档全文索引数
242
陈庆伟,刘军基于Lucene的网站全文搜索的设计与实现本刊E-mail\bjb@mail.sxinfo.net信息技术
据的处理,它由一个多引擎处理模块作为控制的中心,使得引擎可以同时处理多个不同的索引数据库。
二是文档抽取模块。它由处理不同类型文档的文档适配器和一个数据源爬行管理器组成,它的主要工作根据配置文件定时产生数据源爬行器以遍历整个数据源,并使用相应的文档适配器对文档内容进行抽取。
三是文档处理模块。它由一系列文档处理程序模块构成,它们可以在配置管理模块的操纵下挂接在文档处理流水线上。
它可以四是输出模块。它由一些XSLT模块和一个XSLT引擎构成,对核心引擎产生的结果进行不同的格式化处理,以适应不同外围系统的需要。