Chapter 18. Using the SRU server

1. Using the SRU server

NicolasMorin

Koha implements the Search/Retrieve via URL (SRU) protocol. More
information about the protocol itself can be found at http://www.loc.gov/standards/sru/.
The version implemented is version 1.1.

1.1. Explain

If you want to have information about the implementation of SRU
on a given server, you should have access to the Explain file using a
request to the server without any parameter. Like
<http://myserver.com:9999/biblios/>. The response from the
server is an XML file that should look like the following and will
give you information about the default settings of the SRU
server.

1.2. Search

This url :
http://myserver.com:9999/biblios?version=1.1&operation=searchRetrieve&query=reefs
is composed of the following elements:

base url of the SRU server :
http://myserver.com:9999/biblios?

search part with the 3 required parameters : version,
operation and query. The parameters within the search part should
be of the key=value form, and can be combined with the &
character.

One can add optional parameters to the query, for instance
maximumRecords indicating the maximum number of records to be returned
by the server. So
http://myserver.com:9999/biblios?version=1.1&operation=searchRetrieve&query=reefs&maximumRecords=5
will only get the first 5 results results from the server.

1.2.1. More details about Search

If operation=searchRetrieve, then the search key should be
query. As in : operation=searchRetrieve&query=reefs

If operation=scan, then the search key should be scanClause.
As in : operation=scan&scanClause=reefs

etc/zebradb/biblios/etc/bib1.att defines Zebra/3950 indexes
that exist on your system. For instance you'll see that we have
indexes for Subject and for Title: att 21 Subject and att 4 Title
respectively.

In the pqf.properties file located under
etc/zebradb/pqf.properties I see that an access point already uses
my Subject index (index.dc.subject = 1=21) while another uses my
Title index (index.dc.title = 1=4) I know this is my Subject index
because as I've seen just before in my bib1.att file, it's called
with =1=21 in Z3950: so index.dc.subject = 1=21 correctly points to
my Subject index. And Title was called with 1=4 so index.dc.title =
1=4 correctly points to my Title index. I can now construct my query
just like I would in a search box, just preceding it with the
"query" key: query=Subject=reefs and Title=coral searches "reefs" in
the subject and "coral" in the title. The full url would be
http://myserver.com:9999/biblios?version=1.1&operation=searchRetrieve&query=Subject=reefs
and Title=coral If I want to limit the result set to just 5 records,
I can do
http://myserver.com:9999/biblios?version=1.1&operation=searchRetrieve&query=Subject=reefs
and Title=coral&maximumRecords=5

I can also play with truncate, relations, etc. Those are also
defined in my pqf.properties file. I can see for instance the
position properties defined as: