APP下载

基于Solr的分布式铁路科技资源整合与检索实践

2014-08-01李雪山

铁路计算机应用 2014年7期
关键词:字段异构资源整合

李雪山

(中国铁道科学研究院 科学技术信息研究所,北京 100081)

基于Solr的分布式铁路科技资源整合与检索实践

李雪山

(中国铁道科学研究院 科学技术信息研究所,北京 100081)

根据铁路科技信用与能力评价的实际需要,针对铁路科技资源存储、利用现状,基于Solr开源搜索平台,提出了分布式铁路科技资源整合与检索解决方案,设计了检索框架,阐述了具体操作方法,进行了实际应用。

Solr;分布式;资源整合

铁路科技信用与能力评价,是指按规范的指标体系和科学的评估方法,对被评价对象(如单位和个人)的科研行为、科研成果等全面了解、分析的基础上,作出有关其科研能力、信用可靠性、安全性程度的估量。科技信用与能力评价有利于规范科研行为、避免科研失信、提高科研效率,降低科技投入风险。

铁路科研行为、成果信息广泛存在于被评价对象科研活动中,如立项申报、投标、课题实施、结题、科技奖励、论文(专著)发表、专利申请授权及成果转化情况等。而这些科研活动信息分散于不同的系统或网络应用中,存在标准不统一、数据结构不统一、异构平台和异构应用等问题。而要对被评价对象的科技信用和能力作出科学、全面的评价,则应首先对以上科技资源进行有效整合、充分利用。

1 资源整合方案选型

数据资源整合应基于已有系统或应用,在不影响其正常运行的基础上,对其部分或全部数据进行抽取和有效利用。目前,搜索引擎技术不仅可以使得用户快速获得信息,且已成为数据资源整合的一个重要技术手段。基于搜索引擎的数据整合方案已被越来越多的企业或技术人员研究应用。经笔者调研,其主要应用模式有以下几种:

(1)企业自己开发索引工具和软件,对信息进行的索引、检索,达到数据整合的目的。此模式存在软件源码、接口不开放,功能拓展和推广应用困难。

(2)基于Lucene封装实现信息索引。该模式在Lucene前期,其配套应用(Compass、Solr)还未推出前,有着较广泛的应用,但存在工作量大、扩展性差、实际应用困难等问题。

(3)调用Google、百度的API实现信息索引。该模式对第三方搜索引擎具有较强依赖性,无法满足后期业务扩展需要。

(4)基于Compass+Lucene实现信息索引。该模式适合对数据库驱动的应用数据进行索引,是替代传统的like ‘%expression%’来实现对varchar或clob等字段的索引。该模式对于实现站内搜索是一种值得采纳的方案,但在分布式处理、接口封装上尚需要用户进行一定程度的封装。

(5)基于Solr实现信息索引。该模式提供了较为完备的解决方案,封装及扩展性均较好。

综上,基于铁路科技信用与能力评价的现状,探究利用Solr对异构异源数据进行整合,提出了实现方法,并进行了实践。

2 Solr搜索引擎

2.1 Solr简介

Solr是Apache软件基金会的一个开源子项目,它是一个高性能的、采用Java5开发的、基于Lucene全文搜索库的企业搜索服务器。提供了强大的全文检索、高亮显示、分面搜索、动态集群、数据库整合、分布式检索、索引复制及丰富的文档(如Word,PDF等)的处理和地理信息搜索等功能[1],并提供了完善的功能管理界面。

2.2 Solr与Lucene

Lucene也是Apache软件基金会的一个子项目,是一个开放源代码的全文检索引擎工具包,它本身不是一个完整的搜索程序,只是搜索程序的核心和搜索模块,可嵌入到各种应用中实现针对应用的索引、检索功能[2]。

Solr是基于Lucene,并对Lucene的功能进行封装和扩展后而形成的企业级搜索引擎。Solr实现了Lucene服务器化。Solr 和Lucene的区别主要为:Lucene本质上是搜索库,需要进行二次开发才能集成到具体的应用中,而Solr是基于Lucene的独立应用程序;Lucene专注于搜索底层的建设,而Solr专注于企业应用,不仅封装了Lucene接口,实现了索引库的读写,还可进行动态集群、数据库整合、分布式检索、索引复制等企业级应用操作。即,Solr是Lucene 面向企业搜索应用的扩展[3]。

2.3 Solr特性[4]

(1)易用性。Solr简化了Lucene具体应用,使用户无需或简单编写代码就可实现其企业级应用。利用Solr,用户在客户端用POST方法向服务器发送请求,即可完成索引;Solr支持从数据库、Web页面和文本中直接导入数据,进行索引;Solr还可根据需要修改配置文件,完成字段定义、是否被索引、是否存储、中文分词器、默认检索字段、检索方法等配置工作。

(2)异构性。Solr的一个突出特点是提供了对异构系统的数据整合方案,在动态集群、分布检索、索引复制、检索结果排序、查重、显示等方面均提供了完整的解决方法。

(3)易集成性。Solr是一个Web应用,它支持PHP、Java、Perl、C#等多种客户端调用其搜索和索引。客户端和服务端之间基于HTTP协议进行通信,客户端可以创建HTTP请求,然后解析response成各语言能识别的对象或结果,这样实现了Solr与多系统、多语言环境的集成。

3 检索架构设计

目前,铁路科技信用与能力评价所需数据分布在不同系统或应用中。如科研立项、实施及结题信息存在于科研系统,招投标信息存在于科技招标系统,铁路科技成果鉴定、评审信息存在于成果管理系统中,奖励信息则来源于国家科技部及铁道学会网站,专利信息则来源于国家知识产权网站等。基于以上实际,笔者设计了检索框架。该框架主要分为索引库建立与检索两部分,简述如下。

3.1 索引建立

如图1所示,本文根据数据来源不同,采取了不同的数据采集、整合策略。因科研管理、招投标、成果管理等系统为笔者所在课题组开发,拥有系统源代码,并负责运营维护,在建立索引时,课题组在这些系统上部署了Solr索引模块,实现了数据整合。具体过程如下:

(1)分析各系统要采集的数据信息(数据表及字段),在Schema.xml对采集字段进行元数据定义;

图1 分布式索引检索框架

(2)基于各系统业务数据库,对已有数据进行批量导入,建立分布式异构索引库;

(3)基于元数据定义,修改各业务系统相关代码,对数据的增、删、改等操作增加了Solr索引功能,实现了索引数据与具体业务数据的同步。

对于国家奖、铁道学会奖、知识产权等非课题组管理的网站,利用Web-Harvest在通过对目标网站网页结构进行分析的基础上,提取了数据,并通过Solr建立了索引,最终形成了分布式异构索引数据库群。

3.2 数据检索

Solr通过分布( Distributed)和复制( Replication)策略,实现了分布式数据的检索[5]。Solr分布式检索特性可将分布在多个服务器上的资源进行分别索引,再利用片(Shards)技术,将相同的检索请求同时发送到集群内任意服务器进行检索,最后将整合后的检索结果返回到最初的调用服务器。此种特性使得分布式异构资源整合变得较为容易实现。检索过程如图2所示。

图2 数据检索流程

其中,Solr跨库搜索器,主要接受用户搜索查询请求,并将用户请求转换为Solr内部语法格式后,向分布式shards发送查询请求,并对查询结果进行排序、查重、过滤后返回给用户。Solr跨库搜索器实现较为简单,可部署于任意服务器上,其示例代码如下:http://localhost/solr/selec t?shards=172.20.0.62:8083/solr, 172.20.0.65:8083/ solr&q=铁路&facet=true&facet.field=name。其中,172.20.0.62:8083/solr与172.20.0.65:8083/solr为两个分布式索引服务器地址。

4 检索实现

4.1 Solr安装配置

Solr的运行,需先安装在JDK和Servlet 容器(如tomcat),然后下载Solr安装文件(本文使用4.4版本),解压后拷贝dist目录下的solr-4.4.0.war文件到tomcat 的webapps 目录下, 并重命名为solr.war。设定工作目录为D:solrhome solr,并将example下multicore中配置文件拷贝到其中。打开webapps下Solr网站中的web.xml文件,在其中加入:

solr/home

D: solrhomesolr

java.lang.String

以指定工作目录的位置。然后访问http:// localhost:8080/solr出现Solr的系统管理界面,则配置成功。

4.2 中文分词配置

英文以空格作为分隔符,而中文词语之间没有分隔,在建立中文搜索引擎时,首先需要对中文进行切词。目前,此类工具较多如IKAnalyer、Paoding、mmseg4j等。本文使用mseg4j-1.9.1进行了切词。将mseg4j下载并解压后将其dist下的jar包拷贝到tomcatwebappssolrWEB-INFlib目录中。最后,修改Schema.xml文档中的内容,在标签中添加如下内容:

实现了对中文分词器的配置。

4.3 元数据定义

在数据索引前,需先在Schema.xml文件中对要索引的字段进行定义,具体包括字段(fields),唯一标识符(uniqueKey),默认检索字段(defaultSearchField),默认搜索设置(solrQueryParser)等。代码片段如下:

//唯一标示符设置

name

其中节点具体定义了要索引字段的配置,name是字段名、type是分词器,indexed是否被索引,stored是否存储。copyField是将所有的字段复制到一个字段中,以便进行统一检索,solrQueryParser配置了默认检索参数之间的逻辑关系,可为OR,也可为AND。

4.4 数据批量导入与索引库建立

对已有的数据,如铁路科研立项、结题、成果鉴定等数据,本文利用DataImportHandler进行了直接数据库导入。其在Solr的主要配置如下:

在solrconfig.xml文件中加入:

class="org.apache.solr.handler.dataimport. DataImportHandler">

此步启用了批量数据导入模块,并指定了数据库配置文件db-data-config.xml。

在db-data-config.xml中加入:

url="jdbc:sqlserver://localhost:1433;Datab aseName=bky"

user="sa" password="sa"/>配置了数据库名,访问用户名密码等信息。

在db-data-config.xml中加入:

query="select ID,PROJECT_NAME,MAIN _CONTENT from PROJECT"

deltaImportQuery="select from PROJECT where ID ='$ {dataimporter.delta.ID}'" >

此部分为执行导入配置了具体数据表及字段。deltaQuery 和deltaImportQuery 为执行增量导入时的数据库查询语句,选择CHANGEDATE的时间大于上次执行导入的时间的条目,实现了增量导入,避免了全部导入重复内容浪费的时间。Query未执行完全导入时执行的数据库查询语句。

4.5 查询、添加与删除索引

Solr 提供了基于Java的API,即SolrJ。SolrJ对HTTP 链接和XML 命令进行了封装,为使用Java代码处理Solr更加方便,简化了索引创建、搜索、排序和分类等操作。查询主要代码如下:

HttpSolrServer solrServer= new HttpSolr-Server(URL);

SolrQuery query = new SolrQuery();

query.setQuery(":");

QueryResponse rsp = solrServer.query( query );

SolrDocumentList docs = rsp.getResults();for ( Object obj:docs) {

SolrDocument doc=(SolrDocument)obj;

String name = (String ) doc.getFieldValue ("name");

}

通过SolrJ需先连接HttpSolrServer,定义SolrQuery,添加查询语句setQuery(),然后通过QueryResponse 类型的对象读出查询结果;添加索引时,先创建SolrInputDocument对象,通过addField() 方法添加相应内容,最后执行add()以及commit()即可;在建立连接的基础上执行deleteByQuery () 方法,并commit()即可删除索引。

5 结束语

Solr作为一种开源的搜索引擎,具有功能强大、易实施、易应用,灵活性、可扩展性强等优点,为数据资源整合、索引、检索提供了一套较为简单的模式。将其应用在网站索引、检索及数据资源集成检索等系统中具有明显优势,前景广阔。本文根据实际需求,基于Solr提出了分布式铁路科技资源整合与检索解决方案,设计了系统框架,并进行了实践,取得了较好的效果。

[1] Apache Solr[EB/OL]. http://lucene.apache.org/solr/,2014-01-07.

[2] 管建和,甘剑峰.基于Lucene全文检索引擎的应用研究与实现[J].计算机工程与设计,2007(1):489-491.

[3] netoearth. Apache Solr 介绍[EB/OL]. http://blog.netoearth. com/html/201104/apache-solr-介绍.htm,2014-1-4.

[4] 张建勇,廖 凤,刘小兵,陶超全.集群与负载均衡技术在国际科学引文数据库服务系统中的应用研究[J].现代图书情报技术,2010(6):25.

[5] 马凤娟,吴鹏飞.基于solr的异构资源集成检索框架设计与实现[J].现代情报,2012(8):133-135.

责任编辑 徐侃春

Solr-based practice and retrieval of distributed railway technology resource integration

LI Xueshan
( Scientif i c and Technical Information Research Institute, China Academy of Railway Sciences, Beijing 100081, China )

According to the actual needs concerning the credit and capability evaluation of railway technology and the status quo with regard to the storage and utilization of railway technology resources, this paper, based on the solr open-source information retrieval platform, proposed the distributed solution to the railway technology resource integration and retrieval, designed the systematic framework, elaborated the specific operation methods and applied them in practice.

Solr; distributed solution; resource integration

U29∶TP39

A

1005-8451(2014)07-0039-05

2013-12-19

中国铁路总公司科技研究开发计划项目(2011Z011-A)。

李雪山 ,副研究员。

猜你喜欢

字段异构资源整合
试论同课异构之“同”与“异”
少先队活动与校外资源整合的实践与探索
“五育并举”下家校社资源整合的价值意义
海外并购中的人力资源整合之道
浅谈台湾原版中文图书的编目经验
吴健:多元异构的数字敦煌
智慧高速资源整合方式实践
题名与责任说明附注字段用法分析
异构醇醚在超浓缩洗衣液中的应用探索
无正题名文献著录方法评述