-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN"
- "http://www.oasis-open.org/docbook/xml/4.1/docbookx.dtd" [
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.4//EN"
+ "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
<!ENTITY copyright SYSTEM "copyright.xml">
<!ENTITY % idcommon SYSTEM "common/common.ent">
%idcommon;
<refsect1><title>DESCRIPTION</title>
<para>
This filter allows one Z39.50 database to be me mapped to
- another target; or even multiple targets..
+ another target; or even multiple targets.
+ </para>
+ <para>
+ The configuration of virt_db consists of zero or more
+ <literal><virtual></literal> elements each describing the
+ Z39.50 virtual database recognized.
+ The name of the database is the text content of the
+ <literal><database></literal> element which should be
+ first element inside the virtual section.
+ </para>
+ <para>
+ For Metaproxy 1.0.20 and later, the database is treated as a glob pattern.
+ This allows operators * (any number of any character) and
+ ? (any single character). The virtual sections are inspected in
+ the order given. The first matching virtual database is used.
+ </para>
+ <para>
+ Following that is one or more <literal><target></literal>
+ elements with the identifier of each target that the virtual database
+ maps to. If a database is given for a target (following a slash), that
+ database name is used as Z39.50 database for this target. If the
+ database is omitted for the target, the original (virtual) database
+ is used as Z39.50 database.
+ </para>
+ <para>
+ If multiple targets are given that has special meaning depending on the
+ filter following virt_db. If the following filter is load_balance, then
+ the load_balance filter will load balance between the targets given
+ (assuming they serve same content). If the following filter is multi,
+ then results will be merged from all targets instead.
+ </para>
+ <para>
+ The z3950_filter, on the other hand, does not support multiple targets.
+ </para>
+ <para>
+ For <literal><virtual></literal> a route may be given as
+ an attribute. This will make Metaproxy route traffic to the route
+ given. Note that virtual databases may not be combined if all
+ databases do not result in the same routing.
</para>
</refsect1>
<refsect1><title>EXAMPLES</title>
<para>
- A typical configuration looks like this:
+ Consider this virt_db configuration:
<screen><![CDATA[
<filter type="virt_db">
<virtual>
<target>indexdata.com/gils</target>
<target>localhost:9999/Default</target>
</virtual>
+ <virtual route="special">
+ <database>db3</database>
+ <target>indexdata.com/special</target>
+ </virtual>
+ <virtual>
+ <database>*</database><!-- default -->
+ <target>localhost:9999</target><-- database not altered -->
+ </virtual>
</filter>
]]>
</screen>
+ This will offer 4 databases, <literal>db1</literal>,
+ <literal>db2</literal>, <literal>combined</literal> and
+ <literal>db3</literal>. If a Z39.50 specifies <literal>db1</literal>
+ and <literal>db2</literal> that will have same effect as specifying
+ the single database <literal>combined</literal>.
+ </para>
+ <para>
+ Since <literal>db3</literal> routes differently from the other databases,
+ this database may not be combined with the others.
</para>
</refsect1>
<refentrytitle>multi</refentrytitle>
<manvolnum>3mp</manvolnum>
</citerefentry>
+ <citerefentry>
+ <refentrytitle>load_balance</refentrytitle>
+ <manvolnum>3mp</manvolnum>
+ </citerefentry>
</para>
</refsect1>