梁艳 刘双广 劳定雄
摘 要:针对企业异构数据融合检索的需求,介绍了异构数据整合的常用方法和企业级搜索服务器solr的基本功能,结合xml异构数据整合、中文分词技术和友好的用户界面搭建了基于solr的异构数据融合检索系统,实现了对xml文件的索引和检索,为异构数据融合检索提供了解决方案。
关键词:solr;异构数据;XML;融合;检索
1 背景
互联网技术的发展,使得信息数据爆炸式增长。特别是在企业信息中,其非结构数据占到了增长数据的80%,包括PDF、word文档,图像、音频和视频等。企业在不同的应用平台拥有不同的检索系统,这给用户检索信息带来了诸多不便。如何构建一个统一的检索平台,使得用户在海量的异构数据中实现统一检索,一直是研究人员研究的热点。
2 异构数据融合技术
异构数据是指数据格式不同,内容不一,描述不同内容的数据,包括结构化数据(如数据库)、半结构化数据(如HTML、XML)和非结构化数据(如文本、图片)[1]。数据的统一访问的基础在于数据融合集成,目前对于解决异构数据融合的研究有数据仓库、数据抽取和数据转换。
数据仓库是指不同来源的数据在进入数据仓库之前,转换为统一的格式为复杂的查询提供统一的视图,实现数据的统一访问[2]。其代表性的成果是ETL集成工具,ETL[3]允许提取、转换和加载异构数据到数据仓库中和实现数据迁移任务。但数据仓库主要是针对不同数据库中的结构化数据的整合,很难应用于非结构化数据的集成、实现非结构化数据的统一访问[4]。
数据抽取是指将无结构的的文本结构化处理,即输入原始文本输出固定格式[5]。部分数据库管理系统自带有数据抽取工具,能够低成本的解决异构数据整合问题,但在实际应用中有一定的局限性。
XML整合是数据转换技术的代表,即将各种异构数据转换为统一的xml文本格式,实现异构数据整合。XML(eXtensible Markup Language,扩展标记语言)是互联网下的一个关键技术,它能很好地实现来源极端异构的数据描述和传输。XML能独立于应用系统,不受任何特殊的软件或者硬件平台限制,并且这些数据能重复使用,简单易懂,成为交换各种结构化、半结构化、非结构化信息的良好方式[6]。因此,采用XML文档作为底层数据的融合与集成技术,实现了异构数据源间数据共享并且更有效地利用信息资源。XML整合数据的一般模型为下图一所示:
3 solr搜索引擎
3.1 solr简介
Solr(Searching on Lucene Replication)[7]是Apache软件基金会下的一个开源子项目,它是一个高性能的、采用java5开发的、基于lucene全文搜索库的企业搜索服务器。提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
3.2 solr体系架构
Solr的系统结构图[8]如图2所示,solr主要分为3层,solr在lucene的基础上进行了大量的改进,其中solr的底层为对lucene一些功能的改进封装。中间层为solr的核心层,搜索引擎的主要功能都是在这一层实现的,包括对文档进行分析、建立索引、配置solr运行文件和保存索引文件等。最顶层包括HTTP接口,负责通过HTTP传入和返回XML文档;管理界面和索引更新模块。另外,索引复制功能是一个独立的模块,它是由一个主索引和多个从索引构成,从索引从主索引复制索引,主索引负责更新索引,从索引复制同步索引和查询,一个主索引可以复制索引到多个从索引库。索引复制功能主要用于分布式索引和检索[8]。
3.3 solr的特性
⑴灵活性。Solr支持从数据库、web页面和文本中直接导入数据,进行索引。它的索引方法非常简单,用POST方法向服务器发送一个请求,就可完成索引;并且solr的索引文件与lucene完全兼容;Solr的灵活性还体现在可以根据需求灵活的修改配置文件,定义字段类型以及是否被索引、存储。
⑵异构性。Solr作为企业级搜索服务器,它最大的特点就是提供了对异构系统的整合,解决了企业搜索的一大难题。Solr它提供了基于HTTP的标准XML和JSON接口,能对XML文件直接建立索引。solr还提供了DIH(DataImportHandler),用来从其他的异构系统批量导入数据的批处理器。
⑶可扩展性。Solr在顶端定义了一些对外的抽象接口,开发者可以将自己定义的模块功能添加到solr中,而只需要修改相应的配置文件就可以将相应的功能添加进去。
4 异构数据融合检索系统的设计与实现
4.1 系统架构
异构数据融合检索系统需要实现:
⑴从各数据库中提取数据信息,并转换为相应的xml文件,即完成数据爬虫功能;
⑵采用solr对xml文件创建索引;
⑶友好的用户界面,实现响应用户的搜索请求,返回结果。
异构数据融合检索系统框图如图3所示,爬虫模块完成提取数据的xml文件,实现异构数据的融合;solr索引模块需加入中文分词功能,完成对xml文件的索引;用户界面模块需要完成接受用户的查询请并且高亮显示,加上solr查询结果默认是以xml文件显示的,还需要实现xml文件与原数据库的关联显示。
4.2 异构数据抓取
为了实现异构数据整合,本文采取将所有异构数据源转换为xml文件。本文具体采用Dom4j开源库提供的类和函数来生成xml文件。部分代码如下:
4.3 solr系统实现
⑴solr的安装。Solr是apache的开源项目,需安装在JDK和servlet容器(如tomcat)的基础上。安装好JDK和tomcat后,在官网下载solr安装文件,解压到当前目录。复制solr的dist目录下的war文件到tomcat的webapps目录下,并重命名为solr.war。复制solr的example目录下的solr文件到指定目录下,并把该目录设置为solr.home。solr安装完成后,访问solr的管理界面http://localhost:8080/solr/,如出现solr的系统管理界面,则配置成功。Solr的管理界面如图4所示。
⑵中文分词。Solr只能提供简单的中分分词效果,为了提高异构数据检索系统的检索精准度,需要为solr添加中文分词器,本文选择IKAnalyzer作为solr的中文分词器。在官网下载IKAnalyzer安装包,解压到本地目录,并将IKAnalyzer2012FF_u1.jar、IKAnalyzer.cfg.xml、stopword.dic文件添加到tomcat\webapps\solr\WEB-INF\lib 文件中。最后,修改schema.xml文档中的内容。具⑶元数据定义标准。在进行xml文件索引之前,需要在schema.xml文件中定义元数据字段,包括字段名称、字段类型和和是否索引、存储等信息。Solr对文件索引一定要定义唯一标示符uniquekey,一般将id字段设置为唯一标示符。为了实现不加字段名搜索,还需要配置默认搜索字段defaultSearchField,若需多个默认搜索字段,可将其余字段复制到defaultSearchField设置的默认字段中。具体配置如下:
⑷用户界面。设计用于界面时要求美观大方,它的主要功能有接受用户的查询输入,提交给solr,查询后在返回和显示查询结果。在浏览器中输入http://localhost:8080/search 将显示系统主页,如图5所示,检索结果如图6所示。
5 结束语
Solr作为一种开源的搜索引擎,为企业搭建融合搜索提供了可能。本文在solr基础上进行二次开发,搭建了异构数据检索系统。本文的主要工作如下:完成了数据融合,将异构数据转换为统一的xml格式;对solr进行相关研究,搭建了solr检索系统;编写了用户友好界面。
该系统目前还存在一些问题,如对查询结果重排问题、分布式索引检索问题,接下来需要考虑系统存在的不足对其改进优化,以提高系统的实用性和整体性能。
[参考文献]
[1]柏永斌,许利亚,冯震宇,黄爱军.基于XML和WebService的异构数据整合技术应用研究[J].数据库与信息管理.2009(8):1796-1797.
[2]赵军,王国胤,吴中福,李华.数据仓库及其实现[J].数字通信,2000(8):35-38.
[3]A.Albrecht,METL:Managing and Integrating ETL Processes,[C] VLDB09, 6p: 24-28, 2009, August,Lyon, France.
[4]杨岳.非结构化数据统一访问平台及索引技术研究[D].解放军信息工程大学硕士论文,2010:9-11.
[5]刘桂峰.Deep Web数据抽取及集成技术研究[D].苏州大学硕士论文.2009:7-9.
[6]魏东平,潘向阳.基于XML的异构数据的整合与集成模式探讨[J].内蒙古科技与经济 2004:87-88.
[7]http://code.google.com/p/ik-analyzer/.
[8]陈波.基于开源全文检索系统Solr的OPAC分面浏览[J].现代图书情报技术,2007(11):72-75.