B.2. SRW协议的服务

SRW协议的服务包括:检索、浏览以及服务能力,目前本系统支持检索以及服务能力两项服务。

B.2.1. 检索

检索的功能主要是让用户可以获取远程数据库中的数据,实现过程为:客户端发送一个检索请求(searchRetrieve request)给服务端,服务端检索本地的数据库,并返回检索应答(searchRetrieve response)给客户端。

B.2.1.1. 查询请求

查询请求中version和query是必备项,其他是可选项,其中query是基于CQL的检索表达式,查询请求参数表如下所示:

参数说明:

  1. version

    表示客户端支持的版本号,服务器端可以按照客户端的要求发送消息,如果服务器端的版本号高于客户端的版本号,那么服务端将降低版本号,适应客户端的要求。

  2. query

    用CQL描述的检索表达式。

  3. startRecord

    说明客户端要求response返回的第一条记录的位置。服务器端有可能检索到若干条记录,用户如果只想取其中的一部分,则可使用该参数。取值应大于0。默认值为1。

  4. maximumRecords

    说明客户端要求response返回的最大记录数。取值应大于等于0。

  5. recordSchema

    客户端要求返回的记录需要遵循的XML模式。目前我们支持“dc”和“wf”两种schema。默认值是“dc”。

  6. sortKeys

    指定排序方式,可以对多个字段进行排序。sortKeys由多个sortKey组成,sortKey包括的参数如下:

    参数说明:

    • path:说明排序字段名称。

    • schema:说明排序字段的映射集,例如:“wf”或“dc”。

    • ascending:说明排序规则,1表示升序; 0表示降序。默认值为1。

    sortkey的规则:

    • 排序项中的参数之间需要用逗号分隔。

    • 如果“path”或“schema”的内容包含有标点符号或空格,那么需要将“path”和“schema”用引号引起来。

    • 若服务器不能按照要求对结果集排序,查询应答中会给出相应的诊断消息。

  7. recordPacking

    指定命中结果返回的格式,可以是String或是XML。

  8. extraRequestData

    用于指定要检索的数据表。默认值是qikan。

B.2.1.2. 查询应答

查询应答中有两个参数是必须返回的,一个是协议的版本(version),另一个是本次检索返回的结果数(numberOfRecords)。

参数说明:

  1. version

    说明服务器使用的SRW协议的版本。

  2. numberOfRecords

    说明命中记录的数量。查询失败时numberOfRecords的值为0。

  3. records

    返回的记录结果列表。records包含一个或多个record子元素。每个record元素包含一个命中记录或者是一个代表诊断,解释为什么命中记录未被传递,record包括的参数如下:

    参数说明:

    1. recordSchema:结果数据采用的XML模式的URI。

    2. recordPacking:结果数据打包的格式,XML或String。

    3. recordData:实际命中记录内容。

    4. recordPosition:记录在结果集中的位置。

    5. extraRecordData:与记录相关的其他信息。

    举例

  4. resultSetId

    结果集的唯一标识。每个结果集都有唯一的resultSetId,不论是否有新的查询提交,也不论该结果集是否仍然存在。若修改已有结果集(如对其重新进行排序),则服务器为新的结果集提供新的resultSetId。

  5. resultSetIdleTime

    服务器端认为结果集能够保留的时间。resultSetIdleTime只能取正数,且应大于用户实际引用结果集的时间。若服务器不让结果集被引用,则应在响应中忽略结果集标识。

  6. nextRecordPosition

    指下一次返回记录的位置,适应于翻页的情况。

  7. diagnostics

    错误信息列表。diagnostics包含一个或多个diagnostic子元素。每个diagnostic表示一种错误诊断消息。diagnostic包括的参数如下:

    参数说明:

    • code:诊断的编号。

    • details:补充信息,通常采用指定格式。

    • message:为终端用户显示的可读信息。

    举例

  8. extraResponseData

    是扩展 ResponseData,主用来报告searchRetrieveRequest中extraRequestData指定数据表是否存在。

  9. echoedSearchRetrieveRequest

    将查询信息返回给请求方。

B.2.2. 服务能力

客户端请求服务器对自身服务的描述,其实现过程为:客户端发送一个解释请求(Explain Request),服务器端返回解释应答(Explain Response)。

B.2.2.1. 解释请求

解释请求(Explain Request)包括的参数如下:

参数说明:

  1. version

    表示客户端支持的版本号。服务器端可以按照客户端的要求发送消息,如果服务器端的版本号高于客户端的版本号,那么服务端将降低版本号,适应客户端的要求。

  2. recordPacking

    指定命中结果返回的格式,可以是String或是XML。

  3. extraRequestData

B.2.2.2. 解释应答

解释应答(Explain Response)包括的参数如下:

参数说明:

  1. version

    说明服务器使用的SRW协议的版本。

  2. records

    返回的记录结果。

  3. diagnostics

    错误信息列表。

  4. extraResponseData

    是扩展的ResponseData,主要用来报告查询请求中的extraRequestData指定的数据表是否存在。

  5. echoedExplainRequest

    将查询信息返回给请求方。