APP下载

汇文OPAC二次开发之关键字检索功能的实现
——以盐城市图书馆为例

2018-07-05接鹏飞

图书馆学刊 2018年4期
关键词:汇文盐城市馆藏

接鹏飞

(盐城市图书馆,江苏 盐城 224005)

1 引言

在信息技术高速发展的今天,随着现代图书馆逐步由传统型向数字化、智能化方向转变,图书馆的服务模式也呈现出越来越多样化的态势,一个显著的特点就是OPAC的应用与兴起。OPAC全称Online Public Access Catalogue,在图书馆学上被称作“联机公共目录查询”,是图书馆用户查询与浏览馆藏资源最重要的平台与窗口[1]。它与图书馆的门户网站及其他网络服务平台一样,是实体图书馆服务领域在网络环境下的拓展和延伸。

当前,经济和社会事业蓬勃发展,在推动图书馆硬件设施不断升级、馆藏资源日益丰富的同时,也对图书馆的服务工作提出了越来越高的要求。作为图书馆自动化集成系统的重要组成部分,OPAC直接体现了图书馆在网络环境下对读者的服务能力,其性能的优劣直接影响到读者获得馆藏信息的使用效果,进而影响到读者对图书馆资源的利用效果[2]。在读者输入检索关键字的时候,怎样才能准确把握和理解他们的意图?在浩如烟海的馆藏资源中,如何让读者能够快速搜寻到他们想要的信息?这都是图书馆技术人员需要认真思考并加以解决的问题。笔者以盐城市图书馆为例,详述了在汇文OPAC二次开发的过程中,关键字检索功能的设计原则、思路和实现流程。

2 OPAC检索功能的设计原则及思路

2.1 对汇文OPAC进行二次开发的必要性

目前,盐城市图书馆使用的图书管理软件是江苏汇文软件有限公司的LIBSYS,该软件自1999年起在全国范围推广,到目前为止已被国内近600多家知名高校和公共图书馆所选用,其中包括教育部公布的39所“985”学校中的14所,116所“211”学校中的49所大学[3]。就江苏省而言,使用LIBSYS管理系统的地级市以上公共图书馆,除盐城市图书馆之外还有金陵图书馆、无锡市图书馆等其他5家图书馆[4]。笔者通过对上述5家图书馆的访问,并随机抽查了南京审计学院、浙江师范大学、北京科技大学[4]等10家汇文高校图书馆用户,发现它们均在使用汇文自带的OPAC子系统。由此可见,汇文OPAC得到了广泛的运用。然而,就笔者的使用体验而言,汇文OPAC也存在着一定的局限性。毕竟,汇文软件的用户是一个较大的客户群,既包括大专院校图书馆,也包括公共图书馆,加之每个用户的馆藏结构和规模各异,因此,汇文OPAC在技术细节上不可能做到面面俱到,它仅提供一个通用的共性OPAC模板,遵循事先设定的检索代码,得到固定样式的检索结果。因此,这就需要我们根据本馆的馆藏特色、结构和规模,因地制宜,以汇文OPAC v5.0版的现有功能为参考,取长补短,重新开发本馆的OPAC系统。

2.2 设计原则

2.2.1 一般原则

从构建方法以及页面呈现效果来看,OPAC与普通网站并无二致,它们与用户的接口都是Web浏览器。因此,在开发OPAC的时候,首先应遵循建设普通网站的基本原则,譬如优秀的UI设计、合理的布局导航、人性化的交互体验等。

2.2.2 特殊原则

从功能上来看,OPAC和普通网站有着显著的不同。在普通网站面前,用户是被动者,他们无法控制网站的页面显示,只能被动地浏览由网站管理人员编辑的文档内容。而在OPAC面前,用户是主动者,他们在检索框中输入关键字,由服务器根据实际情况返回检索结果页面。因此,在设计OPAC检索页面的时候,我们应该更多地结合本馆特色,充分关注技术细节,力求使用户获得最好的体验。

2.3 设计思路

笔者认为,一个优秀的检索页面,应该做到以下几点。

2.3.1 易懂的检索类型

汇文OPAC提供了题名、责任者等11种检索类型,可谓非常全面。这种设计的初衷应该是为了向读者提供更多的检索选择,但在实际工作中存着一个问题——它们容易令读者感到困惑。在PL/SQL Developer中输入以下代码:

将得到的结果处理后如表1所示。

表1

由表1可以看出,盐城市图书馆读者只使用了其中的7种检索类型。通过对search_content表的分析,我们还可以看出,读者除了对“题名”和“责任者”这两种检索类型的含义比较清晰之外,对其余5种类型可谓不明所以,表中记录的关键字明显与某一种检索类型不相对应。而且,所有读者都忽略了一个重要的检索类型,即“题名拼音”,它对于那些不擅长中文输入的读者,譬如儿童和老人,有着极大的便利。还有一个“主题词”类型,当用户并不确定文献的题名,只是希望查找某一领域文献的时候,这一检索类型将变得十分重要,而表1清楚地说明,读者明显没有关注到这种检索类型。因此,在设计OPAC的时候,添加合适的检索类型,并在检索页上对它们的含义加以说明,尤为重要。

2.3.2 实时的检索提示

目前,所有搜索引擎,以及各大门户网站和电商网站,都提供了检索提示的功能。当我们在检索框中输入汉字或字母的时候,就会展开一个下拉列表,上面显示了以此汉字或字母为开头的热门检索词,而且随着输入词汇的变化,下拉列表的内容也会相应改变。这种功能可以帮助使用者了解预设检索词可能存在的检索结果,避免用户输入错误的检索词,并将用户引导到相应的关键词上,从而有效地提升用户体验。其原理如下:

①设定检索框tkey的初值为空,将下拉列表的innerHTML置空并隐藏;

②在tkey的onkeyup事件中,监视tkey的现值,即输入的关键字;

③如果现值等于初值则返回;如果现值为空则隐藏下拉列表;如果现值不为空且不等于初值,则通过Ajax将现值以及搜索类型、匹配模式以文献类型等参数发送至服务器上的json_search.aspx页面,然后将现值赋给初值,以便进行再次比较。

④json_search.aspx页将根据相关参数,输出一个字符串,该字串由两部分组成,即匹配结果数目和匹配内容。

⑤前端脚本接收到该字串后,先读取匹配结果数目,如果为零,则返回。如果不为零,则先将匹配内容中的关键字高亮处理后,将其设置为下拉列表的innerHTML,然后予以显示。

⑥重复上述②至⑤步。

2.3.3 准确的文献类型

汇文OPAC的检索页上,提供了“所有书刊”“中文图书”“西方图书”“中文期刊”及“西文期刊”5种文献类型,这自然存在着一定的局限性。因为不同的图书馆,其馆藏结构和文献类型各不相同。有些图书馆文献类型众多,非此5种类型所能涵盖,有些图书馆文献类型较少,上述5种文献类型中的某些类型则又显得多余。在PL/SQL Developer中输入以下代码:

selectdoc_type_code from marc group by doc_type_code

将得到的结果处理后如表2所示。

表2

从表2中可以看出,目前该馆只有3种文献类型,如果读者试图搜索西文图书或西文期刊,结果将为零。因此,在设定检索文献类型时,应采取动态的方法,从数据库中提取当前的所有文献类型。这样既真实地反映了馆藏文献类型,也避免了读者去做无谓的检索,从而节约读者了时间。

3 OPAC检索功能的实现

要实现OPAC的检索功能,一般需要3个页面,分别为检索页、结果页和详情页。在本馆OPAC的开发过程中,前台脚本使用了Jquery框架,后台代码则使用c#实现。

3.1 检索页的实现

3.1.1 为了使页面整洁美观,增强读者的视觉体验,笔者使用脚本和css对搜索类型、匹配模式、文献类型和检索框进行了整合,如图1所示。

图1

3.1.2 根据前文的分析,盐城市图书馆的OPAC检索采用了7种搜索类型,即书籍名称(题名)、题名拼音、主题词、出版社、作者(责任者)、ISBN和索书号。匹配模式在汇文OPAC的基础上,增加“完全匹配”。鉴于本馆已应用了麦达公司的博云光盘云系统,而且OPAC单独构建了“期刊导航”页面,故在文献类型的设置上,从动态获取的文献类型中略去了光盘和期刊两种类型。

3.1.3 检索页的重点就是检索框的智能提示。目前,盐城市图书馆OPAC对“题名”“题名拼音”“主题词”和“出版社”这4种检索类型提供了检索提示,并且使用了宽幅下拉列表,以容纳更多的提示信息,给读者更多的选择。它们的前端代码完全一致,主要区别在于在后台代码中根据实际情况使用汇文数据库中不同的数据表。因代码较长,故笔者略去了部分代码,以……代替,并对其进行了备注说明。

①前端脚本

②服务器端部分代码。

在后台,根据前端传递过来的搜索类型、关键字等参数,构成sql语句的where子句。对于“题名”和“题名拼音”,是从marc表中获取数据;对于“主题词”和“出版社”,一般是从marc_idx表中获取数据。但对该馆来说,通过对marc_idx表中关于出版社信息的分析,发现其中存在着大量无效信息,因此,笔者改从press表中获取。

writeRespose(icount.ToString()+"||"+svalue);

点击检索按钮后,向结果页searchresult.aspx传递搜索类型、关键字、匹配模式、文献类型等参数。

3.2 结果页的实现

结果页的实现,在技术上没有什么特别的难点。在本页面的设计中,笔者借鉴了汇文OPAC结果页的功能,并对其进行了改进,主要表现在以下三点。

3.2.1 修正了“馆藏”列表容易消失的问题。在汇文OPAC v5.0版的检索结果页中,当鼠标移动至“馆藏”标签之上时,会出现一个关于该书籍的馆藏列表,上面记录着关于该书的馆藏信息,极大地方便了读者。但问题在于,必须保证鼠标悬念在“馆藏”标签之上,列表才能保持显示,哪怕用户无意中移动了鼠标,列表也会立即消失,如果用户想对列表进行操作,譬如复制列表中的内容,更是不可能实现的事,这在一定程度上给用户带来了不便。这是html结构和css没有处理好引发的小问题,很容易就能解决。

3.2.2 对搜索结果集进行了优化。读者检索图书的目的,是为了寻找可借阅的信息。然而,馆藏书刊的状态有很多种,比如“可借”“业务用书”“保留本”等。如果不加选择地显示全部信息,显然不符合读者检索的初衷。因此,在检索结果页中,笔者对服务器代码进行了优化,使其只显示允许外借或到馆阅览的图书,从而更加贴近读者的需求。

3.2.3 使用了Ajax技术。在我们输入检索关键字并点击检索按钮后,大多数情况下,会出现很多页的结果。在未经处理的模式下,点击页码标签,在新页面打开的时候会自然地伴随一个刷新的过程,这也是web应用程序不如桌面应用程序友好之处。然而,如果我们打开网易新闻排行页面(http://news.163.com/latest/),就会发现它跟普通页面有明显的不同,页面转换流畅自然,最主要的原因,就是它使用了Ajax技术。在WEB系统中引入Ajax技术,将传统的同步通信方式改变为异步通信交互方式,从而丰富客户端的功能,改善了用户体验,缩短了WEB应用程序与桌面应用程序之间的差距[5]。盐城市图书馆的OPAC,也实现了与网易新闻排行页面类似的效果。其实现代码与检索提示的实现代码相近,接收的参数字串一致,这就意味着sql代码的条件语句一致,区别就在于以下两个方面。

①后台sql代码中select的字段不同,而且均是从marc表中获取数据。因为页面需求稍稍复杂,故返回的数据采用了Json格式。

②前端使用Jquery的getJSON()来接收并解析数据。

最终实现效果如图2。

图2

汇文公司提供给盐城市图书馆的OPAC地址为http://opac.yctsg.cn,笔者二次开发后的检索地址为http://so.yctsg.cn/。新的检索功能上线后,得到汇文公司技术人员的肯定,并受到读者的广泛好评。

4 结语

通过本次设计,盐城市图书馆的OPAC系统基本功能得到了完善,但是随着检索技术的不断更新,程序设计不可能一次性达到完美,还需要持续的摸索与优化,并在通用规则的范围内根据大多数读者的使用习惯进行修改。随着图书馆事业的发展,服务的人性化、个性化拓展,OPAC系统也会逐渐完善与成熟。此次设计成功,不仅提升了读者的使用体验,还让本馆技术人员得到了学习和锻炼,对于今后图书馆的事业发展有很大帮助。

[1] 黎邦群.基于数据特征的OPAC简单检索及检索建议[J].图书馆论坛,2012(1):65-68.

[2] 李田章.基于Mashup模式的OPAC资源整合——以整合豆瓣网图书封面为例[J].图书馆论坛,2011(5):119-121.

[3] 江苏汇文软件有限公司官网.关于汇文.[EB/OL].http://www.libsys.com.cn/about.php.

[4] 江苏汇文软件有限公司官网.用户列表.[EB/OL].http://www.libsys.com.cn/userlistmore.php.

[5] 蒋南.基于Ajax技术的搜索建议功能在图书馆OPAC中的应用[J].新世纪图书馆,2009(6):68-71.

猜你喜欢

汇文盐城市馆藏
盐城市扛起使命担当 锻造应急铁军
盐城市开展重点钢铁企业全面体检
馆藏几件残损《佚目》书画琐记
在现代科技中体验传统音律之美——记南京市金陵汇文中学科创“小匠人”张佩瑜
在机器人的陪伴中自信成长——记南京市金陵汇文学校的“墨者”宋泽卿
博物馆的生存之道:馆藏能否变卖?
盐城市中级法院和盐城市侨联共同举办涉侨纠纷调解中心揭牌仪式
空白
知还印馆藏印选——古印篇
“图形的相似”测试题