From b367b4068098c28aa284c447edf42ba2c8d7c42b Mon Sep 17 00:00:00 2001 From: Mike Taylor Date: Thu, 16 Feb 2006 12:28:52 +0000 Subject: [PATCH] Rolling. --- doc/server.xml | 115 ++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 108 insertions(+), 7 deletions(-) diff --git a/doc/server.xml b/doc/server.xml index c39b4ab..83a5e3c 100644 --- a/doc/server.xml +++ b/doc/server.xml @@ -1,5 +1,5 @@ - + The Z39.50 Server @@ -593,21 +593,26 @@ requests and handling them accordingly. This is a achieved through the use of Deep Magic; civilians are warned not to stand too close. + + From here on, ``SRU'' is used to indicate both the SRU and SRW + protocols, as they are identical except for the transport used for + the protocol packets and Zebra's support for them is equivalent. + - Running the SRU/SRW Server (zebrasrv) + Running the SRU Server (zebrasrv) Because Zebra supports all three protocols on one port, it would - seem to follow that the SRU/SRW server is run in the same way as + seem to follow that the SRU server is run in the same way as the Z39.50 server, as described above. This is true, but only in an uninterestingly vacuous way: a Zebra server run in this manner - will indeed recognise and accept SRU and SRW requests; but since it + will indeed recognise and accept SRU requests; but since it doesn't know how to handle the CQL queries that these protocols use, all it can do is send failure responses. - It is possible to cheat, by having SRU or SRW search Zebra with + It is possible to cheat, by having SRU search Zebra with a PQF query instead of CQL, using the x-pquery parameter instead of @@ -643,7 +648,7 @@ to do this, the generic front-end's own configuration file must be used. This file is described elsewhere; - the salient point for SRU and SRW support is that + the salient point for SRU support is that zebrasrv must be started with the -f frontendConfigFile @@ -682,7 +687,103 @@ SRU and SRW Protocol Support and Behavior - ### x-pquery + + Zebra running as an SRU server supports SRU version 1.1, including + CQL version 1.1. In particular, it provides support for the + following elements of the protocol. + + + + Search and Retrieval + + Zebra fully supports SRU's core + searchRetrieve + operation, as described at + + + + One of the great strengths of SRU is that it mandates a standard + query language, CQL, and that all conforming implementations can + therefore be trusted to correctly interpret the same queries. It + is with some shame, then, that we admit that Zebra also supports + an additional query language, our own Prefix Query Format (PQF, + ). +x-pquery + + + + + + + Scan + + ### + + + + + Explain + + ### + + + + + Initialization, Present, Sort, Close + + In the Z39.50 protocol, Initialization, Present, Sort and Close + are separate operations. In SRU, however, these operations do not + exist. + + + + + SRU has no explicit initialization handshake phase, but + commences immediately with searching, scanning and explain + operations. + + + + + Neither does SRU have a close operation, since the protocol is + stateless and each request is self-contained. (It is true that + multiple SRU request/response pairs may be implemented as + multiple HTTP request/response pairs over a single persistent + TCP/IP connection; but the closure of that connection is not a + protocol-level operation.) + + + + + Retrieval in SRU is part of the + searchRetrieve operation, in which a search + is submitted and the response includes a subset of the records + in the result set. There is no direct analogue of Z39.50's + Present operation which requests records from an established + result set. In SRU, this is achieved by sending a subsequent + searchRetrieve request with the query + cql.resultSetId=id where + id is the identifier of the previously + generated result-set. + + + + + Sorting in CQL is done within the + searchRetrieve operation - in v1.1, by an + explicit sort parameter, but the forthcoming + v1.2 or v2.0 will most likely use an extension of the query + language, CQL for sorting: see + + + + + + It can be seen, then, that while Zebra operating as an SRU server + does not provide the same set of operations as when operating as a + Z39.50 server, it does provide equivalent functionality. + + -- 1.7.10.4