2002-04-15 00:12:54 +00:00
|
|
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
2003-03-01 00:13:02 +00:00
|
|
|
<!-- $Revision: 1.9 $ -->
|
2002-04-15 00:12:54 +00:00
|
|
|
<reference id="ref.yaz">
|
|
|
|
<title>YAZ functions</title>
|
|
|
|
<titleabbrev>YAZ</titleabbrev>
|
2002-07-20 12:26:41 +00:00
|
|
|
|
2002-04-15 00:12:54 +00:00
|
|
|
<partintro>
|
|
|
|
<section id="yaz.intro">
|
2002-07-20 12:26:41 +00:00
|
|
|
&reftitle.intro;
|
|
|
|
<para>
|
|
|
|
This extension offers a PHP interface to the
|
2003-01-16 09:44:49 +00:00
|
|
|
<productname>YAZ</productname> toolkit that implements the
|
|
|
|
<ulink url="&url.yaz-loc;">Z39.50
|
|
|
|
Protocol for Information Retrieval</ulink>.
|
|
|
|
With this extension you can easily implement a Z39.50 origin (client)
|
|
|
|
that searches or scans Z39.50 targets (servers) in parallel.
|
2002-07-20 12:26:41 +00:00
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
The module hides most of the complexity of Z39.50 so it should be
|
|
|
|
fairly easy to use. It supports persistent stateless connections very
|
2003-01-16 09:44:49 +00:00
|
|
|
similar to those offered by the various RDB APIs that are available
|
2002-07-20 12:26:41 +00:00
|
|
|
for PHP. This means that sessions are stateless but shared amongst
|
|
|
|
users, thus saving the connect and initialize phase steps in most
|
|
|
|
cases.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
<productname>YAZ</productname> is available at <ulink
|
|
|
|
url="&url.yaz;">&url.yaz;</ulink>. You can find news information,
|
|
|
|
example scripts, etc. for this extension at <ulink
|
|
|
|
url="&url.yaz-phpyaz;">&url.yaz-phpyaz;</ulink>.
|
|
|
|
</para>
|
2002-04-15 00:12:54 +00:00
|
|
|
</section>
|
2002-07-20 12:26:41 +00:00
|
|
|
|
2002-12-02 12:55:46 +00:00
|
|
|
&reference.yaz.configure;
|
2002-07-20 12:26:41 +00:00
|
|
|
|
2002-09-15 15:26:52 +00:00
|
|
|
&reference.yaz.ini;
|
2002-07-20 12:26:41 +00:00
|
|
|
|
|
|
|
<section id="yaz.resources">
|
|
|
|
&reftitle.resources;
|
|
|
|
&no.resource;
|
2002-04-15 00:12:54 +00:00
|
|
|
</section>
|
2002-07-20 12:26:41 +00:00
|
|
|
|
|
|
|
<section id="yaz.constants">
|
|
|
|
&reftitle.constants;
|
|
|
|
&no.constants;
|
|
|
|
</section>
|
|
|
|
|
|
|
|
<section id="yaz.examples">
|
|
|
|
&reftitle.examples;
|
|
|
|
<para>
|
|
|
|
PHP/YAZ keeps track of connections with targets
|
2003-01-16 09:44:49 +00:00
|
|
|
(Z-Associations). A resource represents a connection to a
|
|
|
|
target.
|
2002-07-20 12:26:41 +00:00
|
|
|
</para>
|
2003-03-01 00:13:02 +00:00
|
|
|
<para>
|
|
|
|
The script below demonstrates the parallel searching feature of
|
|
|
|
the API. When invoked with no arguments it prints a query form; else
|
|
|
|
(arguments are supplied) it searches the targets as given in array
|
|
|
|
<literal>host</literal>.
|
|
|
|
</para>
|
2003-03-01 00:11:55 +00:00
|
|
|
<para>
|
|
|
|
<example>
|
|
|
|
<title>Parallel searching using Yaz</title>
|
2002-07-20 12:26:41 +00:00
|
|
|
<programlisting role="php">
|
2002-04-15 00:12:54 +00:00
|
|
|
<![CDATA[
|
|
|
|
$num_hosts = count ($host);
|
|
|
|
if (empty($term) || count($host) == 0) {
|
|
|
|
echo '<form method="get">
|
|
|
|
<input type="checkbox"
|
|
|
|
name="host[]" value="bagel.indexdata.dk/gils">
|
|
|
|
GILS test
|
|
|
|
<input type="checkbox"
|
|
|
|
name="host[]" value="localhost:9999/Default">
|
|
|
|
local test
|
|
|
|
<input type="checkbox" checked="1"
|
2003-01-16 09:44:49 +00:00
|
|
|
name="host[]" value="z3950.loc.gov:7090/voyager">
|
|
|
|
Library of Congress
|
2002-04-15 00:12:54 +00:00
|
|
|
<br>
|
|
|
|
RPN Query:
|
|
|
|
<input type="text" size="30" name="term">
|
|
|
|
<input type="submit" name="action" value="Search">
|
|
|
|
';
|
|
|
|
} else {
|
|
|
|
echo 'You searced for ' . htmlspecialchars($term) . '<br>';
|
|
|
|
for ($i = 0; $i < $num_hosts; $i++) {
|
|
|
|
$id[] = yaz_connect($host[$i]);
|
2003-01-16 09:44:49 +00:00
|
|
|
yaz_range($id[$i], 1, 10);
|
2002-04-15 00:12:54 +00:00
|
|
|
yaz_search($id[$i],"rpn",$term);
|
|
|
|
}
|
|
|
|
yaz_wait();
|
|
|
|
for ($i = 0; $i < $num_hosts; $i++) {
|
|
|
|
echo '<hr>' . $host[$i] . ":";
|
|
|
|
$error = yaz_error($id[$i]);
|
|
|
|
if (!empty($error)) {
|
|
|
|
echo "Error: $error";
|
|
|
|
} else {
|
|
|
|
$hits = yaz_hits($id[$i]);
|
|
|
|
echo "Result Count $hits";
|
|
|
|
}
|
|
|
|
echo '<dl>';
|
|
|
|
for ($p = 1; $p <= 10; $p++) {
|
|
|
|
$rec = yaz_record($id[$i],$p,"string");
|
|
|
|
if (empty($rec)) continue;
|
|
|
|
echo "<dt><b>$p</b></dt><dd>";
|
|
|
|
echo ereg_replace("\n", "<br>\n",$rec);
|
|
|
|
echo "</dd>";
|
|
|
|
}
|
|
|
|
echo '</dl>';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]]>
|
2002-07-20 12:26:41 +00:00
|
|
|
</programlisting>
|
|
|
|
</example>
|
|
|
|
</para>
|
2002-04-15 00:12:54 +00:00
|
|
|
</section>
|
|
|
|
</partintro>
|
|
|
|
|
|
|
|
&reference.yaz.functions;
|
|
|
|
|
|
|
|
</reference>
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
|
|
Local variables:
|
|
|
|
mode: sgml
|
|
|
|
sgml-omittag:t
|
|
|
|
sgml-shorttag:t
|
|
|
|
sgml-minimize-attributes:nil
|
|
|
|
sgml-always-quote-attributes:t
|
|
|
|
sgml-indent-step:1
|
|
|
|
sgml-indent-data:t
|
|
|
|
indent-tabs-mode:nil
|
|
|
|
sgml-parent-document:nil
|
|
|
|
sgml-default-dtd-file:"../../../manual.ced"
|
|
|
|
sgml-exposed-tags:nil
|
|
|
|
sgml-local-catalogs:nil
|
|
|
|
sgml-local-ecat-files:nil
|
|
|
|
End:
|
|
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
|
|
vim: et tw=78 syn=sgml
|
|
|
|
vi: ts=1 sw=1
|
|
|
|
-->
|
|
|
|
|