构建基于SRU(Search and Retrieve via URL)协议的服务接口
来源:互联网 发布:堆排序学生成绩java 编辑:程序博客网 时间:2024/06/07 03:52
一、SRU介绍(Search/Retrieve URL Service)
基于开放协议,通过带有指定参数的url获取对应的xml检索数据。
SRW/SRU:SRW(Search/Retrieve for the Web)和SRU(Search/Retrieve URL Service)
这两者是针对Web的信息检索协议,利用Web服务的架构,实现了Z39.50的一些基本服务。是ZING的核心功能。SRW使用HTTP与SOAP的无状态通信,采用XML作为信息传输编码,也可以单纯使用URL传递查询请求,用WSDL来定义Z39.50传输的格式信息,检索结果也以XML格式输出。而SRU只能通过URL参数方式提交检索请求,不支持完整的SOAP消息包(指支持SOAP消息报中的内容序列)。
它主要包括SRW/U、CQL、Zoom、ez3950和ZeeRex五个部分。
SRU的Web服务定义3种基本操作方法:
(1)Explain方法:客户端通过调用该方法获得SRU接口的相关信息,包括:服务器主机信息、数据库信息、索引字段列表、元数据Schema以及相关参数的默认值等信息,从而支持第三方用户自主配置本地检索策略。
(2)searchRetrieve方法:是SRU服务的核心,它执行对数据库的查询操作并返回结果集。SRU服务器对CQL语法的支持可分3个级别:0级必须支持任意词的检索(如query=OAI),如果接收到一个不支持的查询式,必须能返回一个对应的说明信息;1级除支持0级功能外,还要支持关系表达式(如“title=OAI”)或布尔表达式(如“OAIandSRU”);2级在支持1级功能基础上,要能够解析所有CQL查询并给出适当的应答。一个完善的SRU服务器应该对CQL提供2级支持。根据SRU规范,searchRetrieve操作应答信息可以是有结构的文本流,或者是以DC、MARCXML、MODS等规范描述的XML文档[13],NSL的SRU服务器当前采用扩展DC元数据规范支持结果描述。
(3)Scan方法:调用该方法可返回在网络数据库索引中
包含的各个关键词及其出现频率,帮助用户确定数据库所覆
盖的主题范围,进而选择适当的关键词作为查询词。
我们主要实现主要的SearchRetrieve方法。
二、CQL语言等
1.1. CQL语言
CQL语言简介
CQL:Common Query Language的简写,它是一种正式的检索语言。可以向检索系统发出检索请求,其检索表达式可以映射到具体的检索系统中去(例如:RMS DB Server、SQL等检索系统)。CQL是一种非常直观的检索语言,其设计目的是使人易读、易写。如想了解更详细信息,请参考CQL: http://www.loc.gov/standards/sru/specs/cql.html
CQL与传统检索语言的区别
传统的检索语言一般有两种情况:一种是功能强大而表达性强的语言,对于非专业人员既不容易读,也是不易写的(如SQL、PQF、XML Query);另一种是简单而直观的语言,它不能够表达复杂的一些概念(如CCL或Google的检索语言)。CQL的目的就是把检索表达的这种简单性和直观性与Z39.50的Type-1检索有机地结合在一起,就像界面上任何一个语法正确地文本一样,CQL可以特意定制一些如“do what you mean”作为一些简单的每天的查询。当然,如果需要的话,也允许使用一些方法表达复杂的概念。
1.2. CQL语言说明及样例
简单词
表示不需要加入任何运算符和修饰符,直接输入检索词进行检索。例如:计算机。
关系表达式
关系运算符
=:
相当于模糊匹配,用于查找匹配一定条件的记录。例如:论文题名="计算机辅助设计 研究",表示查找论文题名是“计算机辅助设计 研究”这个字符串或是包括“计算机辅助设计 研究”的一串字符串,注意:只能在“计算机辅助设计 研究”的前后插入字符,不能在“计算机辅助设计 研究”字符串内插入任何字符。
精确等于某个值。
exact:能精确匹配一串字符串。例如:作者 exact "王明",是指查找作者是王明的记录。
all:当检索词中包含有多重分类时,它们分别可以被扩展成布尔运算符“and”的表达式。例如:论文题名 all “北京 上海 广州”,可扩展为:论文题名=“北京” and 论文题名=“上海”and 论文题名=“广州”,表示查找论文题名中包括“北京、上海、广州”的记录。
any:当检索词中包含有多重分类时,它们分别可以被扩展成布尔运算符“or”的表达式。例如:论文题名 any "北京 上海 广州"可扩展为:论文题名=“北京” or 论文题名=“上海” or 论文题名=“广州”,表示查找论文题名中包括“北京、上海、广州”或其中之一的记录。
关系修饰符
支持通配符“*”。
*:表示匹配任意0个或多个字符,如果表示单个字符“*”,那么可以用转义字符“\*”来表示。例如:计算机*研究,表示查找包括“计算机研究”、“计算机软件研究”、“计算机辅助设计研究”等的记录。
布尔表达式
布尔运算符
and:用“与”组合检索项,表示查找包括这两项的记录。例如:北京 and 上海,表示查找包括北京和上海的记录。
or:用“或”组合检索项,表示查找包括这两项或仅其中任一项的记录。例如:北京 or 上海,表示查找包括北京和上海或其中之一的记录。
not:使用“非”查找包括某一项而非另一项的记录。例如:软件 not 硬件,表示查找包括软件但不包括硬件的记录。
下表为具体的检索样例。
表 1. 检索样例
检索词 含义 软件检索数据库所有字段中含有“软件”的记录论文标题 = 软件检索数据论文标题字段中含有“软件”的记录软件 and 测试检索数据库所有字段中含有“软件”和“测试”的记录软件 or 测试检索数据库所有字段中含有“软件”或“测试”的记录论文标题 = "软件" and 论文标题 = "测试"检索数据库论文标题字段中含有“软件”和“测试”的记录论文标题 = "软件" or 论文标题 = "测试"检索数据库论文标题字段中含有“软件”或者“测试”的记录论文标题 = "软件" not 论文标题 = "测试"检索数据库论文标题字段中含有“软件”但是不含有“测试”的记录作者 exact "杨美琴"检索数据库作者字段精确为“杨美琴”的记录企业名称 all "万方 股份 公司"检索数据库企业名称字段中含有“万方”和“股份”以及“公司”的记录企业名称 any "万方 股份"检索数据库企业名字段中含有“万方”或“股份”的记录论文标题= "软件" and 论文标题= "测试" not 作者="顾江萍"检索数据库论文标题字段中含有“软件”和“测试”,但是作者字段中不含有“顾江萍”的记录
三、SRU/W检索接口访问说明(示例)
Locator:http://irsr.llas.ac.cn/sru
SRU/W版本:1.2
HTTP Transport:GET,POST(SRU)
Result Formats:http://irsr.llas.ac.cn/sru/style/searchRetrieveResponse.xsl
2、SRU/W参数设计规范检索的功能主要是让用户可以获取远程数据库中的数据,实现过程为:客户端发送一个检索请求(searchRetrieve request)给服务端,服务端检索本地的数据库,并返回检索应答(searchRetrieve response)给客户端。
2.1、SRU客户端请求格式主要遵守SRU标准请求格式,包含以下几个基本参数,见表1:
同样遵守SRU请求的标准应答格式,见表3:
在IRSR中,主要是针对综合资源和科研机构进行查询。其中综合资源可分为软件、资源集、文本集合、数据集、事件、图像/多媒体、交互资源、服务8种类型。
具体查询方法主要有两种:
3.1、提交表单进行查询
查询地址:http://irsr.llas.ac.cn/sru
图1 SRU/W表单查询界面
例如:要查名称中含有“nano“的综合资源,
则选择“找综合资源”,下拉菜单选择“名称”,然后输入“nano”,并点击”提交查询“。
3.2、querystring的查询方式
如上例的表单,提交的基本URL如:
http://irsr.llas.ac.cn/sru/services?radio=ColA&version=1.1&operation=searchRetrieve&maximumRecords=10&startRecord=1&recordPacking=xml&recordSchema=&recordXPath=&resultSetTTL=300&sortKeys=&stylesheet=style%2FsearchRetrieveResponse.xsl&extraRequestData=&ctype=title&query=nano
以上两种查询方法可得到的请求结果都为一个XML文件,格式如services.xml所示:services.xml
客户端得到XML文件后,可将其解析,得到相应的结果。示例如图2:
图2 records解析示例-资源查询
同理,查询科研机构名称中含有"中国科学院"的记录,见图3:
提交的基本URL如下:
http://irsr.llas.ac.cn/sru/services?radio=OrgA&version=1.1&operation=searchRetrieve&maximumRecords=10&startRecord=1&recordPacking=xml&recordSchema=&recordXPath=&resultSetTTL=300&sortKeys=&stylesheet=style%2FsearchRetrieveResponse.xsl&extraRequestData=&ctype=title&query=%E4%B8%AD%E5%9B%BD%E7%A7%91%E5%AD%A6%E9%99%A2
图3 records解析示例-机构查询
四、基于SRU协议系统的应用
参考:1.http://www.docin.com/p-70531363.html
2.http://www.loc.gov/standards/sru/specs/cql.html cql介绍
3.http://www.loc.gov/standards/sru/index.html sru 标准
4.http://www.loc.gov/standards/sru/resources/tools.html 辅助开发工具包等
- 构建基于SRU(Search and Retrieve via URL)协议的服务接口
- SRU/SRW协议的异构库检索详解(一) _SRU
- SRW/SRU协议的异构库检索详解(二) _SRW
- SRU
- URL的协议和Internet的服务
- NuSOAP构建基于PHP的SOAP服务
- 基于nodejs的分布式服务构建
- 构建基于CXF的WebService服务(1)--创建HelloWorld服务
- 基于http协议的接口测试(1)
- 基于http协议的接口测试(2)
- 基于FPGA的UART接口协议设计
- 基于SOAP协议的WEB服务研究
- 基于UDP协议的广播服务
- 开发基于接口的 .net web 服务
- 基于SpringBoot的通用设备操作接口服务
- 基于线程池和NIO技术构建高效的多协议Android通讯框架(转)
- 基于构建实时WEb应用的HTML5 WebSocket协议<一>
- 基于构建实时WEb应用的HTML5 WebSocket协议<二>
- 转飞林沙-Javascript玩转继承-混合继承
- LWUIT引路蜂地图开发示例:地图平移
- Oracle 常用的几个表和视图(细分1)
- Android ApiDemos示例解析(67):Graphics->Layers
- shell for循环和数组应用
- 构建基于SRU(Search and Retrieve via URL)协议的服务接口
- 设计一个队列能够在O(1)取得队列的最大值
- Android ApiDemos示例解析(68):Graphics->MeasureText
- 音频格式相关术语
- iis出现 Server Application Error 错误解决方法
- ActionContext和ServletActionContext小结
- C++中的字符串类型(转载)
- ARM 指令寻址方式
- 16进制转10进制