图书馆电子资源OpenSearch搜索插件开发与实现
李明伍
西华大学图书馆 成都 610039
摘要

介绍图书馆电子资源OpenSearch插件的开发,较好地实现图书馆资源与用户的浏览环境和检索习惯的集成融汇,满足用户方便、快捷、高效地利用资源的需求。

关键词: 电子资源; OpenSearch; 搜索插件; 嵌入式服务
Development and Implementation of the Search Plug-in for Electronic Resource Based on OpenSearch Protocol
Li Mingwu
Library of Xihua University,Chengdu 610039,China
Abstract

This paper introduces the development of the search plug-in for electronic resource of library based on OpenSearch protocol, which puts library resources to the search bar of user’s browser by integrating with existing browsing habits and information retrieval workflows, and makes the electronic resource more accessible and usable.

Keyword: Electronic resource; OpenSearch; Search plug-in; Embedded service
1 引 言

数字图书馆提供给用户的电子资源越来越多,但是不同类型、不同载体的资源所采用的检索软件和用户界面各不相同,用户检索和获取信息的困难大大增加。虽然开展了形式各样的信息服务,用户的迫切需求却是数字图书馆到底有什么和怎样才能方便有效地利用[ 1]。用户更喜欢的是利用诸如百度、Google这样的网络搜索引擎获取信息[ 2]。图书馆必须针对新的发展形势适应用户不同的信息需求和信息行为,建设嵌入用户过程的新型信息服务机制[ 3],提供多种可嵌入用户环境的工具,把图书馆服务融入到用户的信息利用环境,才能更吸引读者更多地利用图书馆。搜索插件[ 4]实现了不用登录在线资源的检索界面而直接利用浏览器的搜索框检索信息。OpenSearch[ 5]是一套用于描述搜索服务的技术集合,实现将网站的检索功能整合到包括浏览器在内的第三方应用上。

本文论述图书馆电子资源OpenSearch插件的开发,利用开放标准把图书馆资源检索服务集成到用户浏览器内置的搜索框以实现资源嵌入式服务,以期使图书馆提供多元化的服务,丰富用户利用图书馆资源的工具,满足用户方便、快捷、有效的资源利用需求,提高图书馆资源的利用率。与其他插件技术相比,基于OpenSearch的搜索插件具有直接利用浏览器内置的搜索栏、使用标准开放、实现简单、利用方便、定制化和个性化等优点。

2 需求分析与设计思路
2.1 应用现状

图书馆目前已经尝试采用桌面和浏览器工具推行“嵌入到用户信息使用环境[ 6]”的服务,方便用户直接检索利用图书馆的资源。特别是以插件的形式集成到用户浏览器的图书馆工具条[ 7]的使用被认为是一种改变当前图书馆服务的“弱引力”现象的创新做法[ 8],已经或正在对图书馆的工作产生有益的影响。定制化的嵌入式工具条的确可为数字图书馆用户提供更为方便快捷的资源检索服务,不过也同样存在一些问题:

(1)图书馆工具条中的搜索栏无法让用户定制,用户无法添加删除自己喜欢的资源的搜索到搜索栏,无法构建个性化的搜索环境。

(2)图书馆工具条是经过编译后需要安装运行的程序,用户对其内容无法控制,从而带来如用户对隐私的担忧、性能问题,以及主流大众用户对插件管理的能力不足等问题[ 9]

(3)图书馆工具条一般集中控制,更新之后会影响所有用户原来的设置。

(4)浏览器已经内置搜索栏,定制化的工具条中如果再含有搜索栏,容易使用户迷惑。

(5)个性化的工具条会造成工具条泛滥,添加多个第三方工具条会把用户浏览器弄乱。

2.2 需求分析

基于图书馆端系统的服务越来越不适应用户的需要[ 10],数字图书馆的服务组织向以用户为中心的服务组织模式转变,图书馆必须考虑构建多元化的信息服务渠道和方法,将资源和服务推送到用户桌面、融合进用户科学研究活动中[ 11],方便用户快捷地获取图书馆的资源。因此,系统建设的需求是把图书馆资源的检索功能集成到用户浏览和检索环境,直接利用主流浏览器内置搜索栏,实现图书馆资源检索功能集成融汇;用户按照不同的使用场景组织他们最常用的搜索服务到搜索栏,按需混搭构建用户个性化的搜索环境和信息使用环境,方便用户聚焦与他们信息检索相关的图书馆的各类数据库系统、书目系统和网站信息,激发用户的信息寻求行为;方便推广利用图书馆资源的该项服务功能,用户在检索利用图书馆资源的时候能自动发现、自动识别与提示用户把这项搜索服务添加到自己的浏览器的搜索服务列表中;轻量级、不增加用户客户端的负担、无须系统安装和执行代码、无潜在的技术支持问题,方便用户管理和使用,方便用户检索利用图书馆的电子资源,提高图书馆资源的利用率。

2.3 技术思路

很多现代的主流浏览器如Firefox 2.0、IE 7.0及其最新版中已经内置有搜索栏插件,将强大的搜索功能集成到浏览器中,允许用户直接搜索各类网站。这些浏览器都支持通过标准的OpenSearch规范将电子资源或搜索引擎的搜寻功能集成到浏览器内置的搜索栏。OpenSearch是 Amazon A9[ 12] 孵化器开发的一个 XML 标准,最新版本为OpenSearch 1.1[ 5]。OpenSearch规范主要包括一个基于XML格式的用于识别和描述搜索引擎OpenSearch 描述文件、描述到哪里去获取搜索结果OpenSearch 搜索语法、提供用来定义呈现检索结果的格式的OpenSearch Response、显示OpenSearch结果站点的OpenSearch Aggregators和OpenSearch自动发现技术5个部分。通过 OpenSearch 技术,电子资源非常容易把其搜索功能嵌入到浏览器的搜索栏,用户也非常容易地将来自不同内容供应商的内容聚合在一个独立的搜索界面上。OpenSearch技术框架如图1所示,工作流程如图2所示:

图1 OpenSearch插件系统集成框架

图2 基于OpenSearch搜索插件的工作过程

3 系统总体设计

考虑到主流浏览器如IE7.0对POST数据请求的支持以及字符编码、系统认证等问题,系统在OpenSearch插件框架基础上增加了一个系统服务层,位于服务器端,对于有浏览器支持问题的请求发送到这一层,处理后转发到电子资源系统检索接口,实现资源的检索服务,增强了系统的可用性。系统框架如图3所示:

图3 图书馆电子资源OpenSearch搜索插件系统框架

4 OpenSearch插件的开发与实现
4.1 开发步骤

基于OpenSearch的搜索插件开发步骤如图4所示:

图4 基于OpenSearch的搜索插件的开发步骤

(1)开发OpenSearch插件搜索接口,主要实现电子资源的搜索功能。

(2)准备并部署Favicon图标。Favicon是搜索栏显示资源的小图标,为特定资源指定形象图标会加深对资源的印象。该图标要部署在Web服务器供插件访问。

(3)编写OpenSearch描述文件。OpenSearch 描述文件是小型 XML 文件,用于描述资源的搜索服务。OpenSearch 描述文件的主要元素如表1所示:

表1 OpenSearch 描述文件主要元素表

(4)部署OpenSearch描述文件。将创建好的OpenSearch描述文件部署到服务器上,以便系统能够访问。

(5)在创建资源的 OpenSearch 描述文件后,便可以向用户推广资源的OpenSearch服务。推广的主要方法有两种:向用户提供安装该服务的链接或按钮;通过自动发现技术推广[ 5]

4.2 具体实现

利用OpenSearch插件把资源的搜索功能集成到浏览器内置的搜索栏,关键在于按照OpenSearch规范建立资源的OpenSearch描述文件,通过推广OpenSearch描述文件让用户安装使用。下面以读秀图书搜索和中文科技期刊数据库为例来说明OpenSearch插件的实现过程。读秀图书搜索支持HTTP GET数据请求,并与西华大学图书馆OPAC系统有效整合,直接创建OpenSearch描述文件推广应用即可。中文科技期刊数据库利用POST提交查询请求,需要在系统服务层将浏览器支持的GET参数转换为POST请求。

(1)创建读秀图书搜索OpenSearch描述文件

通过自定义 OpenSearch 规范实现的读秀图书搜索的描述文件如下所示:

<?xml version="1.0" encoding=" UTF-8" ?>

<OpenSearchDescription xmlns="http://a9.com/-/spec/OpenSearch/1.1/">

//根元素的xmlns属性是必须的,并且值必须为“http://a9.com/-/spec/OpenSearch/1.1/”

<ShortName>图书馆读秀图书搜索</ShortName>

//定义提供OpenSearch服务的资源名称是图书馆的读秀图书搜索

<Description>利用读秀图书搜索引擎检索图书,支持文献传递获取不能直接下载的文献</Description>

<Image width="16" height="16" type="image/x-icon">http://lib.xhu.edu.cn/img/duxiu.ico</Image>

//Image元素属性width和height定义图标的长和宽,type定义图标显示格式

<Url type="text/html" template="http://www.duxiu.com/search?sw={searchTerms}"/>

//指定搜索的链接,定义调用外部资源的查询请求接口方法<InputEncoding>UTF-8</InputEncoding> //输入编码方式

</OpenSearchDescription>

编写好这个XML文件后,可以部署到服务器上推广给其他应用,第三方应用系统可以利用这个描述文件来调用读秀提供的搜索服务。在OpenSearch描述文件中Url元素是核心,Type和Template是该元素必备的属性,其中属性Type 描述了搜索服务返回结果的 MIME 类型;属性Template 描述了搜索服务,它定义了一个搜索服务的 Url 模板,使用大括号括起来的{searchTerms}来定义查询关键词在 Url 中的位置。

(2)系统服务层GET转换为POST请求的实现函数

IE不支持搜索框POST数据请求,需要在系统服务层实现GET转换为POST请求并发送到资源检索接口。下面是利用ASP.NET实现的POST数据到指定的检索接口的关键函数,其基本原理是在网页中建立一个表单,利用若干隐藏字段设置需要POST的数据,然后利用脚本自动提交到特定URL,实现数据的转发。

public static void RedirectAndPOST(Page page, string destinationUrl, NameValueCollection data, string _formID){ //参数page是referrer page,destinationUrl是检索接口URL,data是POST的数据集合, formID是被提交的表单标识

String formID = _formID;

StringBuilder strForm = new StringBuilder();//创建StringBuilder对象

strForm.Append("<form id=\"" + formID + "\" name=\"" + formID + "\" action=\"" + url + "\" method=\"POST\">");//构建表单

foreach (string key in data){

strForm.Append("<input type=\"hidden\" name=\"" + key + "\" value=\"" + data[key] + "\">");}//设置需要POST的数据

strForm.Append("</form>");//表单结束标记

//以下建立JavaScript脚本自动提交创建的表单

StringBuilder strScript = new StringBuilder();

strScript.Append("<script language='javascript'>");

strScript.Append("var v" + formID + " = document." + formID + ";");

strScript.Append("v" + formID + ".submit();");//实现表单提交

strScript.Append("</script>");

string allPost= strForm.ToString() + strScript.ToString();

//把表单和脚本连接起来

page.Controls.Add(new LiteralControl(allPost));//在特定页面添加Literal容器处理POST表单,实现数据转发和重定向操作}

(3)推广应用

可以通过两种方法推广资源的OpenSearch描述文件,对于用户执行的安装操作,需要在相应的网页中提供按钮或链接让用户点击确认安装到浏览器的搜索栏。点击事件的JavaScrip脚本如下:

function addDuXiuEngine(){

if (window.external || window.external.AddSearchProvider) {

window.external.AddSearchProvider("http://lib.xhu.edu.cn/opensearch/duxiu.xml");

/*判断用户浏览器支持的扩展功能,并利用支持的函数实现添加功能 */

} else if (window.sidebar && window.sidebar.addSearchEngine) {

/*兼容Firefox2.0之前的版本,加入 else if 判断 */

window.sidebar.addSearchEngine(

"http://lib.xhu.edu.cn/opensearch/duxiu.xml",

" http://lib.xhu.edu.cn/img/duxiu.ico ",

"ShortName", "Description"); }}

4.3 插件界面

图5是图书馆电子资源OpenSearch搜索插件在Firefox 2.0中的界面以及利用搜索框检索读秀图书搜索的结果界面。

图5 Firefox 2.0中图书馆电子资源OpenSearch插件界面

图6 IE 7.0中图书馆电子资源OpenSearch插件界面

图6是图书馆电子资源OpenSearch搜索插件在IE 7.0中的界面以及利用搜索框检索中文科技期刊数据库搜索的结果界面。

5 结 语

基于OpenSearch技术的图书馆电子资源搜索插件充分利用了OpenSearch 开放标准、实现简单的特点,同时利用浏览器内置的搜索栏插件集成联合搜索的优势,快速构建图书馆电子资源的搜索功能到浏览器的集成融汇,提供了从浏览器搜索栏直接检索图书馆电子资源的利用渠道,初步实现了图书馆电子资源有效的嵌入和一站式检索,方便用户利用图书馆的电子资源。在系统设计中,直接利用了浏览器内置的搜索栏并初步解决了OpenSearch插件和资源搜索数据请求存在的问题,提高了系统的可用性。目前,图书馆电子资源OpenSearch搜索插件的不足之处在于不支持老版本的浏览器。总的来说,在当前的数字信息环境下,图书馆需要利用包括OpenSearch插件在内的多种可嵌入用户环境的桌面和浏览器工具,缩短与用户的距离,丰富并改善利用图书馆的工具,提高资源的利用率。

参考文献
[1] 刘锦山. 张晓林: 创新成就未来[J]. 高校图书馆工作, 2005, 25(2): 12-13. [本文引用:1]
[2] OCLC. Perceptions of Libraries and Information Resources(2005)[R]. Dublin, Ohio, USA: OCLC, 2005. [本文引用:1]
[3] 张晓林. 建设嵌入用户过程的新型信息服务机制[EB/OL]. [2010-02-05]. http://flyrainbow.bokee.com/6137160.html. [本文引用:1]
[4] Wikipedia. Search Plugin [EB/OL]. [2010-02-05]. http://en.wikipedia.org/wiki/Search_plugin. [本文引用:1]
[5] Draft 4[EB/OL]. [2010-02-02]. http://www.opensearch.org/Specifications/OpenSearch/1.1. [本文引用:3]
[6] 张晓林. 数字图书馆机制的范式演变及其挑战[J]. 中国图书馆学报, 2001, 27(6): 3-8. [本文引用:1]
[7] 郭文丽, 张晓林. 嵌入式数字图书馆工具条的设计与实现[J]. 现代图书情报技术, 2007(6): 1-4. [本文引用:1]
[8] Webster P. The Library in Your Toolbar[J]. Library Journal, 2007, 32(12): 30-32. [本文引用:1]
[9] IT168思维牧童. 浏览器插件有钱途吗[EB/OL]. [2010-03-12]. http://tech.it168.com/a2008/0722/198/000000198184.shtml. [本文引用:1]
[10] 李春旺. 图书馆集成融汇服务研究[J]. 现代图书情报技术, 2009(12): 1-6. [本文引用:1]
[11] 张晓林. 寻求数字化知识化环境下的新型信息服务模式[EB/OL]. [2010-02-05]. http://conference.las.ac.cn/Sino-German/2004/pdf/cn/15.doc. [本文引用:1]
[12] A9. com[EB/OL]. [2010-02-02]. http://opensearch.a9.com/. [本文引用:1]