<chapter id="server">
- <!-- $Id: server.xml,v 1.2 2002-04-09 19:20:23 adam Exp $ -->
+ <!-- $Id: server.xml,v 1.8 2005-08-12 12:44:36 marc Exp $ -->
<title>The Z39.50 Server</title>
<sect1 id="zebrasrv">
<title>Running the Z39.50 Server (zebrasrv)</title>
+ <!--
+ FIXME - We need to be consistent here, zebraidx had the options at the
+ end, and lots of explaining text before them. Same for zebrasvr! -H
+ FIXME - At least we need a small intro, what is zebrasvr, and how it
+ can be run (inetd, nt service, stand-alone program, daemon...) -H
+ -->
+
+ <!-- re-write by MC, using the newly created input files for the
+ zebrasrv manpage -->
+
+
+ <sect2><title>DESCRIPTION</title>
+ <para>Zebra is a high-performance, general-purpose structured text indexing
+ and retrieval engine. It reads structured records in a variety of input
+ formats (eg. email, XML, MARC) and allows access to them through exact
+ boolean search expressions and relevance-ranked free-text queries.
+ </para>
+ <para>
+ <command>zebrasrv</command> is the Z39.50 and SRW/U frontend
+ server for the <command>Zebra</command> indexer.
+ </para>
+ <para>
+ On Unix you can run the <command>zebrasrv</command>
+ server from the command line - and put it
+ in the background. It may also operate under the inet daemon.
+ On WIN32 you can run the server as a console application or
+ as a WIN32 Service.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>SYNOPSIS</title>
+ &zebrasrv-synopsis;
+ </sect2>
+
+ <sect2>
+ <title>OPTIONS</title>
+
+ <para>
+ The options for <command>zebrasrv</command> are the same
+ as those for YAZ' <command>yaz-ztest</command>.
+ Option <literal>-c</literal> specifies a Zebra configuration
+ file - if omitted <filename>zebra.cfg</filename> is read.
+ </para>
+
+ &zebrasrv-options;
+ </sect2>
+ <sect2><title>VIRTUAL HOSTS</title>
+ <para>
+ <command>zebrasrv</command> uses the YAZ server frontend and does
+ support multiple virtual servers behind multiple listening sockets.
+ </para>
+ &zebrasrv-virtual;
+ </sect2>
+ <sect2><title>FILES</title>
+ <para>
+ <filename>zebra.cfg</filename>
+ </para>
+ </sect2>
+ <sect2><title>SEE ALSO</title>
+ <para>
+ <citerefentry>
+ <refentrytitle>zebraidx</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>,
+ <citerefentry>
+ <refentrytitle>yaz-ztest</refentrytitle>
+ <manvolnum>8</manvolnum>
+ </citerefentry>
+ </para>
+ <para>
+ Section "The Z39.50 Server" in the Zebra manual.
+ <filename>http://www.indexdata.dk/zebra/doc/server.tkl</filename>
+ </para>
+ <para>
+ Section "Virtual Hosts" in the YAZ manual.
+ <filename>http://www.indexdata.dk/yaz/doc/server.vhosts.tkl</filename>
+ </para>
+ <para>
+ Section "Specification of CQL to RPN mappings" in the YAZ manual.
+ <filename>http://www.indexdata.dk/yaz/doc/tools.tkl#tools.cql.map</filename>
+ </para>
+ <para>
+ The Zebra software is Copyright <command>Index Data</command>
+ <filename>http://www.indexdata.dk</filename>
+ and distributed under the
+ GPLv2 license.
+ </para>
+ </sect2>
+
+ <!--
<para>
<emphasis remap="bf">Syntax</emphasis>
<screen>
- zebrasrv [options] [listener-address ...]
+ zebrasrv [options] [listener-address ...]
</screen>
</para>
<term>-z</term>
<listitem>
<para>
- Use the Z39.50 protocol (default). These two options complement
- each other. You can use both multiple times on the same command
- line, between listener-specifications (see below). This way, you
- can set up the server to listen for connections in both protocols
- concurrently, on different local ports.
+ Use the Z39.50 protocol. Currently the only protocol supported.
+ The option is retained for historical reasons, and for future
+ extensions.
</para>
</listitem>
</varlistentry>
<listitem>
<para>
The log level. Use a comma-separated list of members of the set
- {fatal,debug,warn,log,all,none}.
+ {fatal,debug,warn,log,all,none}.
</para>
</listitem>
</varlistentry>
</varlistentry>
</variablelist>
</para>
-
- <para>
- A <replaceable>listener-address</replaceable> consists of a transport
- mode followed by a colon (:) followed by a listener address.
- The transport mode is either <literal>ssl</literal> or
- <literal>tcp</literal>.
- </para>
-
- <para>
- For TCP, an address has the form
- </para>
-
- <para>
-
- <screen>
- hostname | IP-number [: portnumber]
- </screen>
-
- </para>
-
- <para>
- The port number defaults to 210 (standard Z39.50 port).
- </para>
-
- <para>
- Examples
- </para>
-
- <para>
-
- <screen>
- tcp:dranet.dra.com
-
- ssl:secure.lib.com:3000
- </screen>
-
- </para>
-
- <para>
- In both cases, the special hostname "@" is mapped to
- the address INADDR_ANY, which causes the server to listen on any local
- interface. To start the server listening on the registered port for
- Z39.50, and to drop root privileges once the ports are bound, execute
- the server like this (from a root shell):
- </para>
-
- <para>
-
- <screen>
- zebrasrv -u daemon tcp:@
- </screen>
-
- </para>
-
- <para>
- You can replace <literal>daemon</literal> with another user, eg.
- your own account, or a dedicated IR server account.
- </para>
-
- <para>
- The default behavior for <literal>zebrasrv</literal> is to establish
- a single TCP/IP listener, for the Z39.50 protocol, on port 9999.
- </para>
-
+ -->
</sect1>
+
<sect1 id="protocol-support">
<title>Z39.50 Protocol Support and Behavior</title>
<sect2 id="search">
<title>Search</title>
+ <!--
+ FIXME - Need to explain the string tag stuff before people get bogged
+ down with all these attribute numbers. Perhaps in its own
+ chapter? -H
+ -->
+
<para>
The supported query type are 1 and 101. All operators are currently
supported with the restriction that only proximity units of type "word"
</para>
<para>
- The server has full support for piggy-backed present requests (see
+ The server has full support for piggy-backed retrieval (see
also the following section).
</para>
A phrase register is created for those fields in the
<literal>.abs</literal> file that contains a
<literal>p</literal>-specifier.
+ <!-- ### whatever the hell _that_ is -->
</para>
<para>
For the <emphasis>Truncation</emphasis> attribute,
<emphasis>No Truncation</emphasis> is the default.
<emphasis>Left Truncation</emphasis> is not supported.
- <emphasis>Process #</emphasis> is supported, as is
+ <emphasis>Process # in search term</emphasis> is supported, as is
<emphasis>Regxp-1</emphasis>.
<emphasis>Regxp-2</emphasis> enables the fault-tolerant (fuzzy)
search. As a default, a single error (deletion, insertion,
<term>x?</term>
<listitem>
<para>
- Matches <emphasis>x</emphasis> once or twice. Priority: high.
+ Matches <emphasis>x</emphasis> zero or once. Priority: high.
</para>
</listitem>
</varlistentry>
</listitem>
</varlistentry>
<varlistentry>
- <term>x|y</term>
+ <term>x|y</term>
<listitem>
<para>
Matches either <emphasis>x</emphasis> or <emphasis>y</emphasis>.