Home Page -> PerX -> SRU Server Implementation

Implementation details

The latest release of PerX Toolkit (Beta 1.5 27/03/07) includes an SRU/W server. PerX can now be cross-searched via SRU by data service providers or can be embedded in other services such as VLEs

CQL queries are parsed by an SRU/W wrapper (please see below image, which shows the SRU Server within the PerX architecture context.) The SRU/W wrapper passes the query to the PerX toolkit engine, which converts the query into Lucene syntax (for OAI targets), CQL syntax (for SRU targets), custom API syntax (e.g. for Google) and PQF/PQN syntax (for Z39.50 targets.), and forwards them to the relevant wrappers for resolution. When the wrappers return hits, they are converted into a simple "search results" XML file that is placed into the SRU Response object.

We have not implemented an SRW-oriented (SOAP-type) server as the literature has indicated that there are reasons to be concerned about the efficiency of SRW and SOAP-based Web Services as opposed to SRU and REST-style services, at least in high-throughput multi-threaded clients.

PerX Toolkit Architecture including SRU Server
Basic SRU features

Fully supported

Supports only version 1.1
Supports all SRU parameters except recordPacking, recordSchema, recordXPath, resultSetTTL, stylesheet and extraRequestData (which are silently ignored by the PerX CQL parser.) However, it supports the following extra-data parameter:

It is currently disabled

Search/Retrieve Response

The format of the response objects is dictated by a PerX XML template file. However, any number of recordSchemas can be created, using any combination of fields from the targets. The PerX default response format try to use as much as possible DC encoding. Currently only the PerX default response format is available

Operations Usage and Sample SRU queries


This operation returns a simple but enough description of our SRU service.



This operation is used to search and retrieve records from the SRU server. The records are returned in dc format and / or using a PerX default response format to be formally defined.

Usage Example 1: will search all collections and retrieve the number of records containing the keyword "corrosion"

Usage Example 2: will search category 1 (articles)

Usage Example 3: will search database 18 (NASA)

Usage Example 4: will retrieve the first chunck of records containing "web services", found in a previous search, from database IoP

  • Further information:
  • Last Updated 10-May-07