统一检索服务关键技术的研究与实现
王庆恒1, 马自卫2, 李高虎3
1.北京邮电大学计算机学院 北京 100876
2.北京邮电大学图书馆 北京 100876
3.北京邮电大学资产经营公司 北京 100876
摘要

分析并总结4大类数字图书馆资源,分别是商业数据库资源、Internet网页资源、本地自建特色资源和OAI收割元数据资源,研究不同方式的资源整合技术来实现对这几类资源的整合;在此基础上提供一系列服务,重点对统一检索服务的关键技术进行分析,并详细阐述其实现机理和工作流程。统一检索服务通过数据请求模块获取用户的检索条件实现对资源的检索,通过数据分析抽取模块进行分析抽取并存储检索结果,通过Ajax技术将检索结果动态展示给用户,以达到良好的用户体验。

关键词: 资源整合; OpenURL; DOM; Web; Service
The Research and Implementation of Unified Search Service’s Key Technologies
Wang Qingheng1, Ma Ziwei2, Li Gaohu3
1.College of Computer,Beijing University of Posts and Telecommunications, Beijing 100876, China
2.Beijing University of Post and Telecommunication Library,Beijing 100876,China
3.Beijing University of Posts and Telecommunications Asset Management Company, Beijing 100876,China
Abstract

This paper analyzes and summarizes four types of digital library resources, including commercial database resources, Web resources, local self-built resources and OAI metadata harvesting resources, then the authors integrate these resources in different ways. Based on these resources, many services can be supplied. This paper focuses on the analysis and realization of unified search service, whose implementation mechanism and work flow are also introduced. Unified search service can achieve a good user experience by means of searching different resources through data request module, extracting data by data analyzer module, and using Ajax to show the dynamic display results to the users.

Keyword: Resource integration; OpenURL; DOM; Web; service
1 引 言

数字图书馆作为资源管理的核心技术,近年来取得了长足的发展。数字图书馆资源非常丰富,但由于各数字资源建设所采用的技术、标准等不同,且在物理位置上大多是分布式的,对于用户来说要获取所需信息,不仅需要熟悉各个检索系统,而且需要频繁地登录和退出这些系统,消耗了大量的时间和精力。基于此,如何方便快捷地整合来自不同类型、不同格式的数据资源,提供一站式检索服务,成为目前迫切需要解决的问题[ 1]

异构数据源统一检索系统正是为解决这一问题而出现的。虽然目前已有很多项目和成型的统一检索系统,

比如国家“863”数据库重大专项课题“基于XML的数据集成、共享和交换”、CALIS统一检索系统等,国外开展多数据源集成检索系统的研究比较早,已提出多种解决方案并已开发出多种异构数据源统一检索系统[ 2],然而都有其各自的特点和使用范围,普遍存在扩展性不强、稳定性差、开发过程比较复杂等问题。作为实现面向服务的体系架构的一种技术,Web Service技术具有跨平台性、跨语言和可扩展性强等特点[ 3]。基于Web Service的实现技术适合应用系统的集成和跨平台数据资源整合等工作。

本文在已有异构数据源统一检索技术的基础上,采用Web Service技术设计和实现异构数据源统一检索系统。该系统能够方便地集成各异构数据资源,实现对资源的一站式访问,具有跨平台性、跨语言和可扩展性等特点。

2 资源的整合和检索服务框架
2.1 数字资源整合

通过对大量的商业数字资源以及本地自建特色资源的分析和比较,笔者将数字资源分为4种类型:分布式商业数据库资源、Internet网页资源、OAI[ 4]收割元数据资源和本地自建特色资源。

(1)分布式商业数据库是指地理上分布在不同地域的数据库,这些数据库数据格式和数据访问方式各不相同;

(2)网页资源是指以公共上网查询方式为用户提供数据检索服务,用户通过浏览器登录对方网站来获取数据;

(3)OAI收割元数据作为本地资源的一种,是由OAI收割子系统提供的;

(4)本地自建特色资源是指经由本地资源加工管理员,通过模板加工、ResCarta[ 5]加工或网页采集的数据。

当前对于数字资源的整合模式主要有元数据整合模式、中间件整合模式和网页搜索代理模式等[ 6]。结合这几种资源整合模式的优点,本文提出基于Web Service技术的资源整合模式,如图1所示:

图1 资源整合的思路

图1中主要采用网页搜索代理模式和基于Web Service的资源整合模式。网页搜索代理模式主要用于实现Internet 网页资源的整合,网页资源是非标准的数据源或没有提供标准检索接口的数据源。

基于Web Service的资源整合模式主要是解决标准的数据源或提供了标准检索接口的数据源的资源整合。数据源端的检索接口被封装为Web Service 服务,统一检索系统通过客户端调用这些服务,从而达到对这类资源的整合。商业数据库资源、OAI收割元数据资源以及本地自建特色资源采用这种模式实现整合。

2.2 服务框架

统一检索服务的设计主要包括两个方面,分别是资源检索的设计和资源整合的设计。统一检索系统核心框架结构主要分为4个层次:访问接口层、业务处理层、功能模块层和原子结构层,如图2所示:

图2 统一检索系统的核心框架结构

图2中的4个层次是对文献[7]中原有设计的一种改进和扩展,主要的改进方面在于:

(1)业务处理层部分替换了原来的控制器层,将资源检索和资源整合按照业务来划分会使得执行的操作更清晰;资源检索请求、分发和调用取代原来的检索控制器,资源注册、更新和管理取代原来的资源控制器。

(2)原子结构层主要是增加了Web 服务客户端组,采用Web Service技术根据资源整合需要对每一个数据源实现相应的客户端[ 8]

每一个层次的功能简单介绍如下:

(1)访问接口层是针对系统内部的各种业务服务而建立的,是为了更加方便地实现访问,接口也便于分布式系统对远程对象的调用。该层包括资源检索接口和资源整合接口。

(2)业务处理层是通过调用功能模块层来实现业务逻辑,业务逻辑的主要内容包括业务的请求、分发及调用,该层在访问接口层和功能模块层之间起到桥梁和纽带的作用。

(3)功能模块层主要实现系统业务处理层中的相应业务逻辑,每一模块都有具体的实现功能类,主要包括的功能模块有数据请求模块、数据分析抽取模块和资源整合模块。

(4)原子结构层主要包含最基本的技术实现和底层的操作,如生成URL、字符编码转换、生成表达式、XML 文件解析[ 9]以及Web Service客户端等。

3 统一检索服务的研究与设计
3.1 统一检索服务的流程

考虑4种资源类型和两种资源整合模式,统一检索流程如图3所示:

图3 统一检索服务流程图

图3可知,用户在检索界面输入检索词,发出检索请求,该检索请求会进入系统的请求服务队列,对于基于网页代理的资源检索和基于Web Service 的资源检索,系统会为每一个资源访问建立相应的线程,提取相应资源的配置文件信息,按相应的方式转发用户的检索请求。将用户的检索请求直接通过开放链接(OpenURL)和数据源端的Web 服务器建立连接[ 7];或者通过调用本地的Web Service Client建立与数据源端的连接,从而调用服务端的检索接口。所有的检索结果通过数据分析抽取后,分别缓存在服务器内存中,最后采用Ajax技术将结果动态呈现给用户[ 10]

3.2 核心功能模块的设计

核心的功能模块包括与检索服务有关的数据请求模块和数据分析抽取模块,与资源注册有关的资源整合模块。

(1)数据请求模块

数据请求模块负责建立与数据源的连接,提交检索请求,并获取对方返回的结果数据。该模块要解决三个问题:要获取什么;怎样获取;怎样接收数据。对于第一个问题,用户通过统一检索服务入口,选择检索方式,提交检索请求,系统将分析该请求,并根据资源的配置文件,将请求进行转换,进而对用户要获取什么有一个精确的表达。对于第二个问题,本文采用OpenURL技术[ 11],系统根据资源配置文件,将请求组装成URL,系统会判断请求是否为Web Service调用。如果是Web Service调用,系统会将请求转发给Client端,Client建立和数据源端的连接;否则,直接通过OpenURL将检索请求发送到数据源端服务器。对于第三个问题,数据源端返回HTML格式或XML格式的字符串数据。

(2)数据分析抽取模块

数据分析抽取模块负责将返回的结果进行分析,抽取出有用的信息,将这些数据转换为统一的格式,并缓存到本地内存。

数据的分析抽取思路是过滤不必要的信息,分离信息块和文章块,最后再抽取详细信息(如标题、作者、摘要和来源等)。

关键的算法如下所示:

①过滤无用信息,参数:资源配置信息,缓冲区,待分析的数据

public DataAnalyzer(resourceConfig, linkCache,dataString){

//过滤含有关键字的无用信息

dataString= TString.eraseElement(dataString, "script");

}

②分离出有用信息块

public void doDataAnalyze(){

// 获取包括文章列表的信息块

inforBlock = dataString.substring(blockBegin,blockEnd);

③抽取详细信息

currentArticle = inforBlock.substring(itemBegin,itemEnd);

DataModel cache = new DataModel();

//获取文章的标题

if (titleBegin.length()>0&& titleEnd.length()>0) {

String title = currentArticle.substring(elementbegin,elementend);

}

//获取文章的作者、来源、链接与标题类似

//添加到文章列表

dataList.add(linkCashe);

//结果数增加

count++;

}

(3)资源整合模块

资源整合模块负责对资源的注册以及相关的管理等。该模块有两个重要方面,一个是Web Service客户端的设计;另一个是利用DOM解析器[ 9]实现对XML资源配置文件的解析和操作,包括读取和写入。

4 统一检索服务的实现
4.1 资源整合的实现

资源的整合包括资源的注册、更新和可视化管理。资源注册实为对各类资源模板的注册和维护更新,包含资源的基本信息:资源ID、名称、编码格式等;资源的请求设置信息:URL、检索字段和检索逻辑标签、登录认证信息、连接代理等;资源的响应设置信息:信息块过滤、文章块截取、文章标题、作者、摘要截取等;另外还包括检索命中数和翻页信息。

Web Service 实现是资源整合的关键,下面以本地特色资源的整合为例,介绍采用XFire[ 12]实现Web Service 服务端和客户端。

(1)数据源端

①在已有的资源加工子系统中配置环境,添加Web Service支持,添加XFire核心包xfire-core-1.2.6.jar,并定义Web Service接口IUspResultService和检索方法uspResult。

②编写对应的类UspResultServiceImpl实现接口IUspResultService和uspResult方法,接收检索请求和检索表达式,调用数据源端的业务逻辑实现检索,最后将检索结果转换为XML 格式的元数据。

③编写XFire要求的Web Service定义描述文件services.xml,此文件位于src/META-INF/xfire/ 下。

④将服务部署到Tomcat,如果部署正确,在浏览器中运行,将显示WSDL页面http://59.64.*.*:8080/MetaDataProc/services/UspResultService?wsdl。

(2)客户端

首先配置环境,添加XFire支持,将XFire客户端包XFire Client端加入到项目工程中,客户端部分代码如下:

package com.bupt.usp.service;//客户端所在的包

import java.net.MalformedURLException;

import …; //导入相应的包

/**

*类名:ServiceClientMDP

*描述:该类是本地自建特色资源的Web Service 客户端,负责调用服务端Web 服务;

*返回:String 类型的检索结果result

*/

public class ServiceClientMDP{

public static void main(String[] args) {

Service srvcModel = (Service) new ObjectServiceFactory().create(IUspResultService.class);

XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());

//Web Service服务端地址

String SearchServiceURL = "http://59.64.*.*:8080/MetaDataProc/services/UspResultService";

try {

// 创建XFire 服务:srvc

IUspResultService srvc = (IUspResultService) factory.create(srvcModel, SearchServiceURL);

//调用服务端方法,参数:资源名,字段名和检索表达式

String result = srvc.uspResult(resourceName, metaName, queryString);

System.out.println(result);

}

catch (MalformedURLException e) {

e.printStackTrace(); }}}

4.2 数据请求模块的实现

(1)检索请求字段

一个完整的检索表达式的构成要素包括:检索关键词、字段、逻辑关系、时间限定等。检索表达式构成的规则如下:

(关键词) <操作符> 字段 <逻辑符号> (关键词) <操作符> 字段 @开始时间-结束时间

数据获取线程的定义,包含三个输入参数:用户名、检索资源以及检索表达式,检索表达式中封装了用户详细的检索请求。

public AccessThread(String userName, String resourceName, String expression){

}

(2)OpenURL

OpenURL是一种解决不同数字资源系统互操作、进行资源整合的方法,也是一项技术标准[ 11]。OpenURL是一种附带有元数据信息和资源地址信息的“可运行”的URL。URL的构造如下:

http://[域名/IP地址]:[端口号]/[访问目录]?[相关参数]&[相关参数]&[相关参数]......

下面以检索EI的URL为例进行分析:

http://www.engineeringvillage2.org.cn/controller/servlet/Controller?CID=quickSearchCitationFormat&database=1&searchWord1=SEARCHWORD1§ion1=SECTION1(1)&boolean1=LOGIC1&searchWord2=SEARCHWORD2§ion2=SECTION2(2)&boolean2=LOGIC2&searchWord3=SEARCHWORD3§ion3=SECTION3(3)&doctype=NO-LIMIT&treatmentType=NO-LIMIT&disciplinetype=NO-LIMIT&language=NO-LIMIT&sort=relevance&yearselect=yearrange&startYear=STARTYEAR&endYear=ENDYEA

其中的关键字有(这里&为URL中&符号的转义符):

SEARCHWORD1、SEARCHWORD2、SEARCHWORD3:为用户输入的1-3个检索词;SECTION1、SECTION2、SECTION3:检索词的检索字段,即:按标题、作者、摘要检索;LOGIC1、LOGIC2:是三个检索词之间的逻辑关系,即:与、或、非;(1)、(2)、(3):三个检索条件之间的分隔符;STARTYEAR、ENDYEAR:检索限制的开始年份和结束年份。基于上述分析的高级检索页面如图4所示:

图4 统一检索服务高级检索

所有用户必须通过统一认证服务器(Central Authentication Server,CAS)[ 13]认证后才可以使用相应的检索服务。

4.3 数据分析抽取模块的实现

数据分析抽取模块的基本流程是:数据分析处理之前首先判断检索命中数,如果检索命中数为0,即没有检索到满足条件的数据,则无需对页面进行分析抽取,直接返回;如果检索的命中数大于0,说明页面中包含有用数据,那么按照预定步骤对页面进行分析抽取。数据分析抽取流程如图5所示:

图5 数据分析抽取流程图

图6给出了统一并发检索不同资源的实例,左侧“资源列表”是用户本次检索的资源范围及相应的检索结果数,右侧“检索结果”页面是某一具体资源的结果展示。

图6 统一检索结果页面

5 结 语

基于Web Service的资源整合技术具有较好的跨平台、跨语言以及可扩展性,实现了对资源的灵活快速整合[ 14];在资源整合的基础上,对分布式数据库资源,Internet网页资源、OAI收割元数据以及本地自建特色资源提供统一检索服务,提供统一的检索界面,将检索请求分别发送给各个数据源,然后将检索结果以统一的格式展示给用户,为用户提供了一站式的访问,节省了用户的精力,而且提高了用户的检索效率;统一检索服务是扩展链接等其他服务的基础,统一检索服务的服务质量会影响其他服务的效果,所以统一检索关键技术的研究具有很高的价值。

参考文献
[1] 孙素云. 基于Web服务统一检索系统的设计[J]. 现代计算机: 专业版, 2007(4): 79-81. [本文引用:1]
[2] 李广建, 张智雄. 国外跨库检索系统研究项目及其特点[J]. 情报理论与实践, 2004, 27(4): 444-447. [本文引用:1]
[3] 李卫峰. 基于Web Service的数字图书馆异构数据集成研究[J]. 贵图学刊, 2009(2): 51-53. [本文引用:1]
[4] 常春. 数字图书馆元数据获取协议OAI[J]. 现代情报, 2007, 27(4): 108-110. [本文引用:1]
[5] RC2007. bk. 1. 000. 8. 1. ResCartaStand ards8. 1[S]. [本文引用:1]
[6] 陈玮华, 马自卫. 基于J2EE的数字图书馆统一检索系统的研究与实现[J]. 现代图书情报技术, 2006 (6): 17-21. [本文引用:1]
[7] 谢靖. 数字资源集成和检索服务平台的研究与实现[D]. 北京: 北京邮电大学, 2009. [本文引用:1]
[8] 吴泽彬, 魏洁, 李蔚清, . 基于Web服务的异构数据源统一检索研究[J]. 计算机集成制造系统, 2007, 13(7): 1444-1450. [本文引用:1]
[9] 顾韵华, 田伟. 基于DOM模型扩展的Web信息提取[J]. 计算机科学, 2009, 36(11): 235-237. [本文引用:2]
[10] 刘斌. 精通Java Web整合开发: JSP+AJAX+Struts+Hibernat[M]. 北京: 电子工业出版社, 2007: 210-235. [本文引用:1]
[11] 朱燕. OpenURL技术在信息集成中的应用[J]. 数字图书馆论坛, 2007(2): 52-55. [本文引用:2]
[12] 利用XFire 开发Web Services[EB/OL]. [2009-03-21]. http://www.qeqoo.com/dev/donet/service/3507.html. [本文引用:1]
[13] 秦怡, 马自卫. 基于CAS模式的统一认证与门户管理的研究与实现[J]. 现代图书情报技术, 2008 (12): 1-7. [本文引用:1]
[14] 魏洁. 基于Web Services的异构数据源统一检索[D]. 南京: 南京理工大学, 2006. [本文引用:1]