又一个开源OPAC——Fac-Back-OPAC

    独立于ILS的新OPAC越来越多,不少还是开源的,最近出现的例子就是Fac-Back-OPAC (faceted backup OPAC),一个分面OPAC,可作为图书馆集成系统OPAC的替代品。

    项目源于Casey Durfee在今年code4lib会议上提出的250行左右的“开源Endeca”代码,使用Solr(http://lucene.apache.org/solr)和Django(http://djangoproject.org/),可以实现类似于Endeca和AquaBrowser的分面功能。Casey在西雅图公共图书馆采用杜威分类法的Horizon系统上实现。
    Dan Scott下载Casey的代码后,用于Laurentian大学图书馆,该馆是采用国会分类法的Unicorn系统。据称只花了两个晚上就有不错的表现了。
    Mike Beccaria同样使用Casey的代码并加以强化,现在Paul Smith学院已经使用了Fac-Back-OPAC。
    Casey也加入该项目,并贡献出称为Helios的最新代码,具有标签云及其他功能。目前可以在西雅图公共图书馆目录中看到挺有意思的标签云显示选项。
    Mike Beccaria和Dan Scott在最新一期Computers in Libraries上发表文章 "Fac-Back-OPAC: An Open Source Interface to Your Library System" 介绍该项目。文章最后说,Fac-Back-OPAC尚在幼年期,还有很多成长的空间。Paul Smith学院打算在今秋监测用户行为,在基于用户需求与检索行为的前提下继续开发。打算强化的附加功能如用户书单、杜威法/LC主题浏览、全MARC显示,或者Web 2.0工具如标签、用户评论。作者们期望感兴趣者的加入。

    文章中有一节(Technology Building Blocks),介绍Fac-Back-OPAC的实现方法,称其成功大部分直接归功于那些开源组件:Solr, marc4j, Django。文后还有相关软件链接(More About the Software and Sites Mentioned in This Article)。
    从MARC记录经过处理成为一个可检索文件的生命周期如下,可供新型OPAC开发者参考:

第一步:从ILS到MARC
像北卡州及其他机构一样,在ILS之外建立目录,始于每晚导出所有MARC记录与馆藏记录。在首次导出后,可以只导出新的或有变化的记录,以更新Fac-Back-OPAC中的实例(instance,记录集?)。

第二步,从MARC到MARCXML:使用marc4j和Jython
由于MARC格式不适合传统搜索引擎标引,因之使用marc4j库将每条MARC记录转换成更易于处理的MARCXML格式。由于Solr只能理解UTF-8,还要将所有记录由MARC-8转换成UTF-8。此外,使用Jython编程语言(运行在Java虚拟机上的Python编译器)以控制marc4j,并用简单的Python句法以控制其余索引过程。

第三步,索引记录:使用Solr
Solr搜索解决方案建立在提供Web服务的企业级Lucene搜索引擎上,简化文件索引、增加附加功能如分面检索结果。每个Solr实例可配置一个Schema,描述文件的字段,以及这些字段的类型(如文本型、日期型或整数型)。Fac-Back-OPAC使用一个带书目Schema的Solr实例,运行于Jetty应用服务器。处理每个MARCXML记录,抽取感兴趣的字段用于分面与索引,生成一个XML文件,作为一个字串,发送到Solr实例,用于通过HTTP POST方式做索引。

第四步,检索界面:使用Django
Django是一个流行的Web应用框架,以Python写成,实现模型-视图-控制器(model-view-controller, MVC)模式,还能提供对一些特性的支持,如缓存搜索结果供展示、翻译成不同的语言、设定RSS种子。只需编辑HTML格式的模板,就可以定制Django的三个模板,即最初检索屏、检索结果页及详细显示页。

相关链接:
Google Code网站上的项目主页:
fac-back-opac: Faceted online public access catalogue; use as an alternate interface
论文:
Fac-Back-OPAC: An Open Source Interface to Your Library System / by Mike Beccaria and Dan Scott. Computers in Libraries, October 2007 (Vol. 27 No. 9)
实例:
西雅图公共图书馆目录(http://catalog.spl.org/catalog/)
Paul Smith学院目录(http://library.paulsmiths.edu/catalog/
[update 2007-10-8: 相关截图见Google Docs共享的演示文稿]

关于开源OPAC,参见:
开源OPAC发布:VuFind (2007-07-23)
二小时建立分面OPAC (2007-04-08)
AADL的新版OPAC (2007-01-22)
开源OPAC也精彩 (2007-01-14)
从获奖看国外流行的开源软件 (2006-12-07)