SRW协议的服务包括:检索、浏览以及服务能力,目前本系统支持检索以及服务能力两项服务。
检索的功能主要是让用户可以获取远程数据库中的数据,实现过程为:客户端发送一个检索请求(searchRetrieve request)给服务端,服务端检索本地的数据库,并返回检索应答(searchRetrieve response)给客户端。
查询请求中version和query是必备项,其他是可选项,其中query是基于CQL的检索表达式,查询请求参数表如下所示:

参数说明:
version
表示客户端支持的版本号,服务器端可以按照客户端的要求发送消息,如果服务器端的版本号高于客户端的版本号,那么服务端将降低版本号,适应客户端的要求。
query
用CQL描述的检索表达式。
startRecord
说明客户端要求response返回的第一条记录的位置。服务器端有可能检索到若干条记录,用户如果只想取其中的一部分,则可使用该参数。取值应大于0。默认值为1。
maximumRecords
说明客户端要求response返回的最大记录数。取值应大于等于0。
recordSchema
客户端要求返回的记录需要遵循的XML模式。目前我们支持“dc”和“wf”两种schema。默认值是“dc”。
sortKeys
指定排序方式,可以对多个字段进行排序。sortKeys由多个sortKey组成,sortKey包括的参数如下:

参数说明:
path:说明排序字段名称。
schema:说明排序字段的映射集,例如:“wf”或“dc”。
ascending:说明排序规则,1表示升序; 0表示降序。默认值为1。
sortkey的规则:
排序项中的参数之间需要用逗号分隔。
如果“path”或“schema”的内容包含有标点符号或空格,那么需要将“path”和“schema”用引号引起来。
若服务器不能按照要求对结果集排序,查询应答中会给出相应的诊断消息。
recordPacking
指定命中结果返回的格式,可以是String或是XML。
extraRequestData
用于指定要检索的数据表。默认值是qikan。
查询应答中有两个参数是必须返回的,一个是协议的版本(version),另一个是本次检索返回的结果数(numberOfRecords)。

参数说明:
version
说明服务器使用的SRW协议的版本。
numberOfRecords
说明命中记录的数量。查询失败时numberOfRecords的值为0。
records
返回的记录结果列表。records包含一个或多个record子元素。每个record元素包含一个命中记录或者是一个代表诊断,解释为什么命中记录未被传递,record包括的参数如下:

参数说明:
recordSchema:结果数据采用的XML模式的URI。
recordPacking:结果数据打包的格式,XML或String。
recordData:实际命中记录内容。
recordPosition:记录在结果集中的位置。
extraRecordData:与记录相关的其他信息。
resultSetId
结果集的唯一标识。每个结果集都有唯一的resultSetId,不论是否有新的查询提交,也不论该结果集是否仍然存在。若修改已有结果集(如对其重新进行排序),则服务器为新的结果集提供新的resultSetId。
resultSetIdleTime
服务器端认为结果集能够保留的时间。resultSetIdleTime只能取正数,且应大于用户实际引用结果集的时间。若服务器不让结果集被引用,则应在响应中忽略结果集标识。
nextRecordPosition
指下一次返回记录的位置,适应于翻页的情况。
diagnostics
错误信息列表。diagnostics包含一个或多个diagnostic子元素。每个diagnostic表示一种错误诊断消息。diagnostic包括的参数如下:

参数说明:
code:诊断的编号。
details:补充信息,通常采用指定格式。
message:为终端用户显示的可读信息。
extraResponseData
是扩展 ResponseData,主用来报告searchRetrieveRequest中extraRequestData指定数据表是否存在。
echoedSearchRetrieveRequest
将查询信息返回给请求方。
客户端请求服务器对自身服务的描述,其实现过程为:客户端发送一个解释请求(Explain Request),服务器端返回解释应答(Explain Response)。
解释请求(Explain Request)包括的参数如下:

参数说明:
version
表示客户端支持的版本号。服务器端可以按照客户端的要求发送消息,如果服务器端的版本号高于客户端的版本号,那么服务端将降低版本号,适应客户端的要求。
recordPacking
指定命中结果返回的格式,可以是String或是XML。
extraRequestData