dp2 V2版本中,OPAC环境中具备数据浏览功能。所谓数据浏览,是指系统根据一定的规则,在OPAC环境中提供特定链接锚点,直接向访问者展示相关数据。数据浏览功能其实也是一种“检索”功能,只不过,它将检索条件固化到特定链接锚点中,除了降低访问者检索词输入成本外,更主要是可以由系统有针对性地、直观地将某些数据展现到访问者面前。
所以,数据浏览功能是常规“检索”功能的补充和扩展。
当前,dp2OPAC服务安装后,并没有提供数据浏览功能配置,需要系统管理员手工添加相关配置文件,才能实现数据浏览功能的添加。
下面将提供一个配置样例并作相应说明:
一、配置样例可点击此处下载。解压后,得到一个名为"browse"的文件夹。将此文件夹拷贝到dp2OPAC系统数据目录下(与"opac.xml文件同级")。重启IIS或回收一下dp2OPAC的应用程序池后,OPAC环境中即具备了浏览功能。
二、访问OPAC页面,可以看到有一个"浏览"栏目,点击它,切换到"浏览"环境,可以看到有"分类浏览"、"新书通报"、"馆藏浏览"、"读者荐购"四个二级栏目。
这些二级栏目,可以自定义扩展,它受控于dp2OPAC系统数据目录下browse文件夹中的"browse_sidebar.xml"文件。用记事本程序或文本编辑程序打开它,就可以看出端倪:
<?xml version="1.0" encoding="gb2312"?>
<root>
<item url="./browse.aspx?sidebar=browse_sidebar.xml&datafile=browse.xml">
<caption lang="zh-CN">分类浏览</caption>
<caption lang="en-US">Browse Class</caption>
</item>
<item url="./browse.aspx?sidebar=browse_sidebar.xml&datafile=newbook.xml">
<caption lang="zh-CN">新书通报</caption>
<caption lang="en-US">New Books</caption>
</item>
<item url="./browse.aspx?sidebar=browse_sidebar.xml&datafile=holdingBrowse.xml">
<caption lang="zh-CN">馆藏浏览</caption>
<caption lang="en-US">Holding Browse</caption>
</item>
<item url="./browse.aspx?sidebar=recommend_sidebar.xml&datafile=recommend.xml">
<caption lang="zh-CN">读者荐购</caption>
<caption lang="en-US">Reader Recommend</caption>
</item>
</root>
即样例中的四个二级栏目,就是上述配置文件中的四个<itme>元素,其中的<caption>元素,可以定义多种语种的栏目名,通过lang属性值区分。而<itme>的url属性值,就是一个页面调用的链接。其中后部诸如"datafile=browse.xml"的定义,指明了不同栏目的调用配置文件。
再打开dp2OPAC系统数据目录下browse文件夹中的"browse.xml"文件:
<?xml version="1.0" encoding="gb2312"?>
<root name="中图法分类导航" command="~hidelist~" default="matchstyle=left,dbname=<全部>,from=分类号" description="提供中图法分类导航。可扩展出其它分类导航" rssDefault="enable=on,maxcount=100" build="autoUpdate=perhour" >
<class name="A 马克思主义、列宁主义、毛泽东思想、邓小平理论" command="word=A">
<class name="A1 马克思、恩格斯著作"/>
<class name="A2 列宁著作"/>
<class name="A3 斯大林著作"/>
<class name="A4 毛泽东著作"/>
<class name="A49 邓小平著作"/>
<class name="A5 马克思、恩格斯、列宁、斯大林、毛泽东、邓小平著作汇编 "/>
<class name="A7 马克思、恩格斯、列宁、斯大林、毛泽东、邓小平生平和传记" />
<class name="A8 马克思主义、列宁主义、毛泽东思想、邓小平理论的学习和研究" />
</class>
<class name="B 哲学、宗教">
<class name="B-4 哲学教育与普及"/>
<class name="B0 哲学理论"/>
<class name="B1 世界哲学"/>
<class name="B2 中国哲学"/>
<class name="B3 亚洲哲学"/>
<class name="B4 非洲哲学"/>
<class name="B5 欧洲哲学"/>
<class name="B6 大洋洲哲学"/>
<class name="B7 美洲哲学"/>
<class name="B80 思维科学"/>
<class name="B81 逻辑学(论理学)"/>
<class name="B82 伦理学(道德哲学)"/>
<class name="B83 美学"/>
<class name="B84 心理学"/>
<class name="B9 宗教"/>
</class>
<!--为节省篇幅,以下分类节点略-->
<_title>
<caption lang="zh-CN">分类浏览</caption>
<caption lang="en-US">Browse Class</caption>
</_title>
</root>
其中,<root>元素具有以下属性及属性值:
name属性值,是分类导航树根节点显示名称,可根据自己的喜好自定义名称。
command属性值"~hidelist~",表示双击此节点时,只展开节点而不提交检索命令。
dafault属性值,声明相关的检索命令,各检索命令间采用逗号分隔。比如matchstyle=left,表示检索匹配方式为前方一致(左对齐);dbname=<全部>表示检索目标库为"<全部>",这个"<全部>"对应于内务前端书目查询窗中的<全部>库。由于配置文件遵循XML规范,对于"<"和">"两个字符,采用"<"和">"实体引用代替——同理,如果dbname=<全部实体>则表示检索目标库为"<全部实体>"。如果只想查找指明库,直接修改为相应的数据库名称即可,格式为:
dbname=中文图书。也可用"|"字符分隔多个数据库名称,表明同时检索这几个数据库,格式为:dbname=中文图书|外文图书。from=分类号,表明检索途径为"分类号"。从这里可以看出,所有的数据浏览都是基于系统检索点(检索途径)的,如果没有预定义检索点,是无法实现数据浏览的。
description属性值,是一个自由行文字符串,它将呈现在相关栏目环境上方,起到简单描述说明作用。
rssDefault属性值,也包含多个用逗号分隔的参数值,比如enable=on表明生成RSS订阅图标以便访问者实现rss订阅;maxcount=100表明最大显示100条记录的RSS记录,如果值为-1,意味着不限制显示记录数量,将命中结果全产生RSS订阅记录。
build属性值,可以定义浏览结果缓存的自动刷新频率。autoUpdate=perhour,表明每小时自动刷新一次;除了perhour外,还可以定义为perday,表明每天自动刷新一次,等等……。
在<root>元素下,有多个<class>元素,<class>元素可以嵌套,即<class>元素下可以包含<class>元素,这就构成了分类导航树型结构的层层展开的树节点。
每个<class>元素,也具备<root>元素一样的属性。
为节省配置成本,系统采用“继承”和“专指”两个原则。所谓继承,是指本节点如果没有定义相关属性,可以自动继承上级节点定义的属性;所谓专指,是指本节点如果定义了相关属性,即便上级节点也定义了同样的属性,那么也优先采用本节点的属性定义。
样例中,<class name="A 马克思主义、列宁主义、毛泽东思想、邓小平理论" command="word=A">,可以看到有一个command属性值为"word=A",它表明检索词为"A",其实,也可以不显式声明"word=A",因为,程序可以自动在name属性值中,通过第一个空格拆分,将前面的字符"A"自动判断为检索词。
可以看出,上述节点中,虽然只表达了检索词,但根据配置继承原则,其实完整的检索命令是:在"全部书目库"中,通过"分类号"检索途径,以"前方一致"方式,输入"A"检索词进行检索……
样例配置中,还有一个"browse_lc.xml"配置文件,这是为了方便某些采用美国国会图书馆分类法的客户提供的,如有需要,系统管理员可自行增加相关栏目并挂接此配置文件即可。
三、browse.xml配置文件展示了一个从书目库发起的数据浏览功能。也可以从实体库(册库)发起,同样实现相关数据浏览功能。样例配置文件"holdingBrowse.xml"就是这样的一个示范:
<?xml version="1.0" encoding="gb2312"?>
<root name="馆藏地浏览" command="~hidelist~" default="matchstyle=left,dbname=<全部实体>,from=馆藏地点" description="根据馆藏地点列出册信息" rssDefault="enable=on,maxcount=100" >
<class name="乐山市图书馆书刊流通部" command="word=乐山市图书馆书刊流通部" convert="tobiblio"/>
<class name="乐山市图书馆文献咨询部" command="word=乐山市图书馆文献咨询部" convert="tobiblio"/>
<class name="乐山市图书馆少儿阅览室" command="word=乐山市图书馆少儿阅览室" convert="tobiblio"/>
<class name="犍为县馆" command="word=犍为县馆" convert="tobiblio"/>
<class name="夹江县馆" command="word=夹江县馆" convert="tobiblio"/>
<class name="井研县馆" command="word=井研县馆" convert="tobiblio"/>
<class name="五通桥区馆" command="word=五通桥区馆" convert="tobiblio"/>
<class name="沙湾区馆" command="word=沙湾区馆" convert="tobiblio"/>
<class name="沐川县馆" command="word=沐川县馆" convert="tobiblio"/>
<class name="实验中学" command="word=实验中学" convert="tobiblio"/>
<class name="乐山残疾人康复中心" command="word=乐山残疾人康复中心" convert="tobiblio"/>
<class name="嘉阳煤业" command="word=嘉阳煤业" convert="tobiblio"/>
<_title>
<caption lang="zh-CN">馆藏地浏览</caption>
<caption lang="en-US">Holding Browse</caption>
</_title>
</root>
上述样例,是从"全部实体"库,通过"馆藏地点"检索途径,以"前方一致"方式,输入不同的检索词进行检索(各节点中的word=中声明了不同的馆藏地点字符串)。
由于是从实体库发起的检索,有别于书目显示格式,以册为主的显示格式不太一样。为了照顾某些客户的习惯,节点中有一个convert属性,其"tobiblio"值,可以实现将册为主的显示格式转换为书目显示格式后再输出。
四、关于新书通报。何谓“新书”?见仁见智,有的根据书目中的出版时间进行判断,比如XXXX年后出版的为新书;有的根据入藏时间进行判断,比如XXXX时间后到馆的为新书;还可以根据编目批次号、册登记批次号等进行判断。样例配置文件"newbook.xml"是根据编目时间进行判断的一个例子:
<?xml version="1.0" encoding="gb2312"?>
<root name="新书通报" command="~hidelist~" default="word=2011/09/05 12:01:01Z-2011/12/31 12:01:01Z,matchstyle=exact,dbname=中文图书,from=操作时间" description="根据编目时间列出目录" rssDefault="enable=on,maxcount=100" build="autoUpdate=perhour" >
<class name="A 马克思主义、列宁主义、毛泽东思想、邓小平理论" command="word=A,matchstyle=left,from=分类号;AND;matchstyle=exact,datatype=number,relation=range"/>
<class name="B 哲学、宗教" command="word=B,matchstyle=left,from=分类号;AND;matchstyle=exact,datatype=number,relation=range"/>
<class name="C 社会科学总论" command="word=C,matchstyle=left,from=分类号;AND;matchstyle=exact,datatype=number,relation=range"/>
<class name="D 政治、法律" command="word=D,matchstyle=left,from=分类号;AND;matchstyle=exact,datatype=number,relation=range" />
<class name="E 军事" command="word=E,matchstyle=left,from=分类号;AND;matchstyle=exact,datatype=number,relation=range"/>
<class name="F 经济" command="word=F,matchstyle=left,from=分类号;AND;matchstyle=exact,datatype=number,relation=range"/>
<class name="G 文化、科学、教育、体育" command="word=G,matchstyle=left,from=分类号;AND;matchstyle=exact,datatype=number,relation=range"/>
<class name="H 语言、文字" command="word=H,matchstyle=left,from=分类号;AND;matchstyle=exact,datatype=number,relation=range"/>
<class name="I 文学" command="word=I,matchstyle=left,from=分类号;AND;matchstyle=exact,datatype=number,relation=range"/>
<class name="J 艺术" command="word=J,matchstyle=left,from=分类号;AND;matchstyle=exact,datatype=number,relation=range"/>
<class name="K 历史、地理" command="word=K,matchstyle=left,from=分类号;AND;matchstyle=exact,datatype=number,relation=range"/>
<class name="N 自然科学总论" command="word=N,matchstyle=left,from=分类号;AND;matchstyle=exact,datatype=number,relation=range"/>
<class name="O 数理科学和化学" command="word=O,matchstyle=left,from=分类号;AND;matchstyle=exact,datatype=number,relation=range"/>
<class name="P 天文学、地球科学" command="word=P,matchstyle=left,from=分类号;AND;matchstyle=exact,datatype=number,relation=range"/>
<class name="Q 生物科学" command="word=Q,matchstyle=left,from=分类号;AND;matchstyle=exact,datatype=number,relation=range"/>
<class name="R 医药、卫生" command="word=R,matchstyle=left,from=分类号;AND;matchstyle=exact,datatype=number,relation=range"/>
<class name="S 农业科学" command="word=S,matchstyle=left,from=分类号;AND;matchstyle=exact,datatype=number,relation=range"/>
<class name="T 工业技术" command="word=T,matchstyle=left,from=分类号;AND;matchstyle=exact,datatype=number,relation=range"/>
<class name="U 交通运输" command="word=U,matchstyle=left,from=分类号;AND;matchstyle=exact,datatype=number,relation=range"/>
<class name="V 航空、航天" command="word=V,matchstyle=left,from=分类号;AND;matchstyle=exact,datatype=number,relation=range"/>
<class name="X 环境科学、安全科学" command="word=X,matchstyle=left,from=分类号;AND;matchstyle=exact,datatype=number,relation=range"/>
<class name="Z 综合图书" command="word=Z,matchstyle=left,from=分类号;AND;matchstyle=exact,datatype=number,relation=range"/>
<_title>
<caption lang="zh-CN">新书通报</caption>
<caption lang="en-US">New Books</caption>
</_title>
</root>
注意,这里的检索词(word=2011/09/05 12:01:01Z-2011/12/31 12:01:01Z)是一个时间范围,这有别于常见的字符串或数值检索词。
同时,为了便于访问者查看新书,这里示范了一个逻辑组配检索命令配置,即用分号分隔,可以通过"AND"、"OR"、"NOT"串起多个检索命令以实现逻辑与、逻辑或、逻辑非的组配检索。
样例表达了:
在"中文图书"库中,通过"分类号"检索途径,以"前方一致"方式,输入"A"等检索词进行检索,并且,只返回"操作时间"是"2011/09/05 12:01:01Z-2011/12/31 12:01:01Z"的结果”。
五、关于"recommend_sidebar.xml",它其实跟"browse_sidebar.xml"差不多,也是用以构造浏览二级栏目的配置文件,只不过,前者比后者多了如下栏目定义:
<item url="./newrecommend.aspx">
<caption lang="zh-CN">创建新的荐购书目</caption>
<caption lang="en-US">New Recommend</caption>
</item>
这是为了仅访问者点击“读者荐购”栏目时,才出现相关的供读者“创建新的荐购书目”的栏目链接所用。
系统管理员清楚了解上述配置方式后,即可非常灵活地实现多种多样的数据浏览功能,希望大家将自己的配置文件与配置心得以回帖形式贴出来与同仁分享。
点击此处下载配置样例