Merge branch 'master' into session_lock
authorAdam Dickmeiss <adam@indexdata.dk>
Wed, 10 Apr 2013 15:02:01 +0000 (17:02 +0200)
committerAdam Dickmeiss <adam@indexdata.dk>
Wed, 10 Apr 2013 15:02:01 +0000 (17:02 +0200)
23 files changed:
IDMETA
NEWS
configure.ac
debian/changelog
doc/.gitignore
doc/pazpar2_conf.xml
doc/pazpar2_protocol.xml
etc/pz2.xsd [new file with mode: 0644]
src/client.c
src/getaddrinfo.c
src/http.c
test/gils_service.xml
test/test_http_28.res
test/test_http_41.res
test/test_termlist_block.sh
test/test_termlist_block_10.res
test/test_termlist_block_11.res
test/test_termlist_block_12.res
test/test_termlist_block_13.res
test/test_termlist_block_4.res
test/test_termlist_block_5.res
test/test_termlist_block_6.res
test/test_termlist_block_9.res

diff --git a/IDMETA b/IDMETA
index 8d8efba..fb476a4 100644 (file)
--- a/IDMETA
+++ b/IDMETA
@@ -1,4 +1,4 @@
 DEBIAN_DIST="wheezy squeeze"
 UBUNTU_DIST="quantal precise oneiric natty lucid"
 CENTOS_DIST="centos5 centos6"
-VERSION=1.6.28
+VERSION=1.6.29
diff --git a/NEWS b/NEWS
index 5d0ba26..2224222 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,13 @@
+--- 1.6.29 2013/04/05
+
+IPV6 updates. Allow IPv6 addresses for database hosts and IPv6 address
+for HTTP server. By default the HTTP server uses IPv4 only, but that can be
+changed by setting "host" attribute for the "listen" element.
+
+Change semantics of pz:extendrecs. Allow for repeated fetches .
+pz:extendrecs is now the number of extra records to fetch (was total
+count before).
+
 --- 1.6.28 2013/03/21
 
 Fix hang or memory violation if show occurred before a search. (not that
index 4a4233b..f37b77c 100644 (file)
@@ -28,6 +28,11 @@ YAZ_INIT([static icu],[4.2.40])
 if test -z "$YAZLIB"; then
        AC_MSG_ERROR([YAZ development libraries missing])
 fi
+case $YAZINC in
+  *YAZ_HAVE_XSLT=1*) ;;
+  *) AC_MSG_ERROR([YAZ not compiled with Libxslt support]) ;;
+esac
+
 YAZ_DOC
 
 AC_SEARCH_LIBS([log],[m])
index 5202520..e4fa3a0 100644 (file)
@@ -1,3 +1,9 @@
+pazpar2 (1.6.29-1indexdata) unstable; urgency=low
+
+  * Upstream.
+
+ -- Adam Dickmeiss <adam@indexdata.dk>  Fri, 05 Apr 2013 14:50:22 +0200
+
 pazpar2 (1.6.28-1indexdata) unstable; urgency=low
 
   * Upstream.
index def16a6..3a6297b 100644 (file)
@@ -11,6 +11,7 @@ manpage.links
 manpage.refs
 *.[0-8]
 local.ent
+local0.ent
 htmlhelp.hhp
 toc.hhc
 manref.xml
index bcdf8ec..74f778e 100644 (file)
   <para>
    The XML configuration may be partitioned into multiple files by using
    the <literal>include</literal> element which takes a single attribute,
-   <literal>src</literal>. The of the <literal>src</literal> attribute is
+   <literal>src</literal>. The <literal>src</literal> attribute is
    regular Shell like glob-pattern. For example,
    <screen><![CDATA[
    <include src="/etc/pazpar2/conf.d/*.xml"/>
      <listitem>
       <para>
        If a show command goes to the boundary of a result set for a
-       database - depends on sorting - and pz:extendrecs is set to a larger
-       value of pz:maxrecs, then Pazpar2 wait for show to fetch remaining
-       records - up to pz:extendrecs. This setting is best used if a
-       database does native sorting, because the result set otherwise may
-       be completely re-sorted during extended fetch.
+       database - depends on sorting - and pz:extendrecs is set to a positive
+       value. then Pazpar2 wait for show to fetch pz:extendrecs more
+       records. This setting is best used if a database does native
+       sorting, because the result set otherwise may be completely
+       re-sorted during extended fetch.
+       The default value of pz:extendrecs is 0 (no extended fetch).
       </para>
-      <note>
+      <warning>
        <para>
-       The pz:extendrecs setting is supported in Pazpar2 version 1.6.26.
+       The pz:extendrecs setting appeared in Pazpar2 version 1.6.26.
+       But the bahavior changed with the release of Pazpar2 1.6.29.
        </para>
-      </note>
+      </warning>
      </listitem>
     </varlistentry>
     <varlistentry>
index f266fd7..6184f4e 100644 (file)
@@ -389,7 +389,7 @@ search.pz2?session=2044502273&command=stat
 
        </para>
        <para>
-       For targets where If <link linkend="pz:sortmap">pz:sortmap</link>
+       For targets where If <link linkend="pzsortmap">pz:sortmap</link>
        is defined, a sort operation will be executed (possibly including
        extending the search).
        </para>
diff --git a/etc/pz2.xsd b/etc/pz2.xsd
new file mode 100644 (file)
index 0000000..d24b937
--- /dev/null
@@ -0,0 +1,31 @@
+<xs:schema 
+          attributeFormDefault="unqualified" 
+          elementFormDefault="qualified" 
+          xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
+          targetNamespace="http://www.indexdata.com/pazpar2/1.0"
+          xmlns:xs="http://www.w3.org/2001/XMLSchema"
+>
+
+  <xs:element name="collection" type="pz:collection" />
+
+  <xs:complexType name="collection">
+    <xs:sequence>
+      <xs:element name="record" type="pz:record" minOccurs="1" maxOccurs="unbounded" />
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="record">
+    <xs:sequence>
+      <xs:element name="metadata" type="pz:metadata" minOccurs="1" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="metadata">
+    <xs:simpleContent>
+      <xs:extension base="xs:string">
+       <xs:attribute type="xs:string" name="type" use="required" />
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+
+</xs:schema>
index 924f36d..7362680 100644 (file)
@@ -770,7 +770,7 @@ int client_fetch_more(struct client *cl)
     struct session_database *sdb = client_get_database(cl);
     const char *str;
     int extend_recs = 0;
-    int number;
+    int number = cl->hits - cl->record_offset;
 
     str = session_setting_oneval(sdb, PZ_EXTENDRECS);
     if (!str || !*str)
@@ -784,10 +784,8 @@ int client_fetch_more(struct client *cl)
         return 0;
     yaz_log(YLOG_LOG, "cl=%s Trying to fetch more", client_get_id(cl));
 
-    if (extend_recs > cl->hits)
-        extend_recs = cl->hits;
-
-    number = extend_recs - cl->record_offset;
+    if (number > extend_recs)
+        number = extend_recs;
     if (number > 0)
     {
         ZOOM_resultset set = cl->resultset;
index 13f7c24..ed8ff70 100644 (file)
@@ -34,14 +34,12 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #include <sys/socket.h>
 #endif
 #ifdef WIN32
-#include <winsock.h>
+#include <winsock2.h>
+#include <ws2tcpip.h>
 #endif
 #if HAVE_NETDB_H
 #include <netdb.h>
 #endif
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
 
 #include <yaz/log.h>
 #include <yaz/nmem.h>
@@ -54,11 +52,9 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 /* Only use a threaded resolver on Unix that offers getaddrinfo.
    gethostbyname is NOT reentrant.
  */
-#if HAVE_GETADDRINFO
 #ifndef WIN32
 #define USE_THREADED_RESOLVER 1
 #endif
-#endif
 
 struct work {
     char *hostport;  /* hostport to be resolved in separate thread */
@@ -71,69 +67,56 @@ static int log_level = YLOG_LOG;
 
 void perform_getaddrinfo(struct work *w)
 {
-    int res = 0;
-    char *port;
-#if HAVE_GETADDRINFO
-    struct addrinfo *addrinfo, hints;
-#else
-    struct hostent *hp;
-#endif
-    char *hostport = xstrdup(w->hostport);
-    if ((port = strchr(hostport, ':')))
-        *(port++) = '\0';
-    else
-    {
-        port = "210";
-    }
+    struct addrinfo hints, *res;
+    char host[512], *cp;
+    const char *port = 0;
+    int error;
 
-#if HAVE_GETADDRINFO
     hints.ai_flags = 0;
-    hints.ai_family = PF_INET;
+    hints.ai_family = AF_UNSPEC;
     hints.ai_socktype = SOCK_STREAM;
-    hints.ai_protocol = IPPROTO_TCP;
-    hints.ai_addrlen = 0;
-    hints.ai_addr = 0;
-    hints.ai_canonname = 0;
-    hints.ai_next = 0;
-    // This is not robust code. It assumes that getaddrinfo always
-    // returns AF_INET address.
-    if ((res = getaddrinfo(hostport, port, &hints, &addrinfo)))
+    hints.ai_protocol = 0;
+    hints.ai_addrlen        = 0;
+    hints.ai_addr           = NULL;
+    hints.ai_canonname      = NULL;
+    hints.ai_next           = NULL;
+
+    strncpy(host, w->hostport, sizeof(host)-1);
+    host[sizeof(host)-1] = 0;
+    if ((cp = strrchr(host, ':')))
     {
-        yaz_log(YLOG_WARN, "Failed to resolve %s %s",
-                w->hostport, gai_strerror(res));
+        *cp = '\0';
+        port = cp + 1;
     }
-    else
+    error = getaddrinfo(host, port ? port : "210", &hints, &res);
+    if (error)
     {
-        char ipport[128];
-        unsigned char addrbuf[4];
-        assert(addrinfo->ai_family == PF_INET);
-        memcpy(addrbuf,
-               &((struct sockaddr_in*)addrinfo->ai_addr)->sin_addr.s_addr, 4);
-        sprintf(ipport, "%u.%u.%u.%u:%s",
-                addrbuf[0], addrbuf[1], addrbuf[2], addrbuf[3], port);
-        freeaddrinfo(addrinfo);
-        w->ipport = xstrdup(ipport);
-        yaz_log(log_level, "Resolved %s -> %s", hostport, ipport);
-    }
-#else
-    hp = gethostbyname(hostport);
-    if (!hp)
-    {
-        yaz_log(YLOG_WARN|YLOG_ERRNO, "Failed to resolve %s", hostport);
+        yaz_log(YLOG_WARN, "Failed to resolve %s: %s",
+                w->hostport, gai_strerror(error));
     }
     else
     {
-        char ipport[128];
-        unsigned char addrbuf[4];
-
-        memcpy(addrbuf, *hp->h_addr_list, 4 * sizeof(unsigned char));
-        sprintf(ipport, "%u.%u.%u.%u:%s",
-                addrbuf[0], addrbuf[1], addrbuf[2], addrbuf[3], port);
-        w->ipport = xstrdup(ipport);
-        yaz_log(log_level, "Resolved %s -> %s", hostport, ipport);
+        if (getnameinfo((struct sockaddr *) res->ai_addr, res->ai_addrlen,
+                        host, sizeof(host)-1,
+                        0, 0,
+                        NI_NUMERICHOST) == 0)
+        {
+            w->ipport = xmalloc(strlen(host) + (port ? strlen(port) : 0) + 2);
+            strcpy(w->ipport, host);
+            if (port)
+            {
+                strcat(w->ipport, ":");
+                strcat(w->ipport, port);
+            }
+            yaz_log(log_level, "Resolved %s -> %s", w->hostport, w->ipport);
+        }
+        else
+        {
+            yaz_log(YLOG_LOG|YLOG_ERRNO, "getnameinfo failed for %s",
+                    w->hostport);
+        }
+        freeaddrinfo(res);
     }
-#endif
-    xfree(hostport);
 }
 
 static void work_handler(void *vp)
index 6580381..74fdf66 100644 (file)
@@ -27,7 +27,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
 #include <stdio.h>
 #ifdef WIN32
-#include <winsock.h>
+#include <winsock2.h>
+#include <ws2tcpip.h>
 typedef int socklen_t;
 #endif
 
@@ -54,14 +55,6 @@ typedef int socklen_t;
 #include <assert.h>
 #include <string.h>
 
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-
-#if HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-
 #include <yaz/yaz-util.h>
 #include <yaz/comstack.h>
 #include <yaz/nmem.h>
@@ -97,6 +90,12 @@ static void http_channel_destroy(IOCHAN i);
 static http_server_t http_server_create(void);
 static void http_server_incref(http_server_t hs);
 
+#ifdef WIN32
+#define CLOSESOCKET(x) closesocket(x)
+#else
+#define CLOSESOCKET(x) close(x)
+#endif
+
 struct http_server
 {
     YAZ_MUTEX mutex;
@@ -622,6 +621,7 @@ static struct http_buf *http_serialize_response(struct http_channel *c,
     struct http_header *h;
 
     wrbuf_rewind(c->wrbuf);
+
     wrbuf_printf(c->wrbuf, "HTTP/%s %s %s\r\n", c->version, r->code, r->msg);
     for (h = r->headers; h; h = h->next)
         wrbuf_printf(c->wrbuf, "%s: %s\r\n", h->name, h->value);
@@ -1047,11 +1047,7 @@ static void proxy_io(IOCHAN pi, int event)
                     yaz_log(YLOG_WARN, "Proxy read came up short");
                     // Close channel and alert client HTTP channel that we're gone
                     http_buf_destroy(hc->http_server, htbuf);
-#ifdef WIN32
-                    closesocket(iochan_getfd(pi));
-#else
-                    close(iochan_getfd(pi));
-#endif
+                    CLOSESOCKET(iochan_getfd(pi));
                     iochan_destroy(pi);
                     pc->iochan = 0;
                 }
@@ -1121,11 +1117,7 @@ static void http_channel_destroy(IOCHAN i)
     {
         if (s->proxy->iochan)
         {
-#ifdef WIN32
-            closesocket(iochan_getfd(s->proxy->iochan));
-#else
-            close(iochan_getfd(s->proxy->iochan));
-#endif
+            CLOSESOCKET(iochan_getfd(s->proxy->iochan));
             iochan_destroy(s->proxy->iochan);
         }
         http_buf_destroy_queue(s->http_server, s->proxy->oqueue);
@@ -1140,11 +1132,8 @@ static void http_channel_destroy(IOCHAN i)
 
     http_server_destroy(http_server);
 
-#ifdef WIN32
-    closesocket(iochan_getfd(i));
-#else
-    close(iochan_getfd(i));
-#endif
+    CLOSESOCKET(iochan_getfd(i));
+
     iochan_destroy(i);
     nmem_destroy(s->nmem);
     wrbuf_destroy(s->wrbuf);
@@ -1173,6 +1162,7 @@ static struct http_channel *http_channel_create(http_server_t hs,
     r->keep_alive = 0;
     r->request = 0;
     r->response = 0;
+    strcpy(r->version, "1.0");
     if (!addr)
     {
         yaz_log(YLOG_WARN, "Invalid HTTP forward address");
@@ -1187,7 +1177,8 @@ static struct http_channel *http_channel_create(http_server_t hs,
 /* Accept a new command connection */
 static void http_accept(IOCHAN i, int event)
 {
-    struct sockaddr_in addr;
+    char host[256];
+    struct sockaddr addr;
     int fd = iochan_getfd(i);
     socklen_t len;
     int s;
@@ -1196,18 +1187,25 @@ static void http_accept(IOCHAN i, int event)
     struct conf_server *server = iochan_getdata(i);
 
     len = sizeof addr;
-    if ((s = accept(fd, (struct sockaddr *) &addr, &len)) < 0)
+    if ((s = accept(fd, &addr, &len)) < 0)
     {
         yaz_log(YLOG_WARN|YLOG_ERRNO, "accept");
         return;
     }
+    if (getnameinfo(&addr, len, host, sizeof(host)-1, 0, 0, NI_NUMERICHOST))
+    {
+        yaz_log(YLOG_WARN|YLOG_ERRNO, "getnameinfo");
+        CLOSESOCKET(s);
+        return;
+    }
     enable_nonblock(s);
 
     yaz_log(YLOG_DEBUG, "New command connection");
-    c = iochan_create(s, http_io, EVENT_INPUT | EVENT_EXCEPT, "http_session_socket");
+    c = iochan_create(s, http_io, EVENT_INPUT | EVENT_EXCEPT,
+                      "http_session_socket");
 
-    ch = http_channel_create(server->http_server, inet_ntoa(addr.sin_addr),
-                             server);
+
+    ch = http_channel_create(server->http_server, host, server);
     ch->iochan = c;
     iochan_setdata(c, ch);
     iochan_add(server->iochan_man, c);
@@ -1219,75 +1217,101 @@ int http_init(const char *addr, struct conf_server *server,
 {
     IOCHAN c;
     int l;
-    struct protoent *p;
-    struct sockaddr_in myaddr;
     int one = 1;
     const char *pp;
-    short port;
     FILE *record_file = 0;
+    struct addrinfo hints, *ai = 0;
+    int error;
+    int ipv6_only = -1;
 
     yaz_log(YLOG_LOG, "HTTP listener %s", addr);
 
+    hints.ai_flags = 0;
+    hints.ai_family = AF_UNSPEC;
+    hints.ai_socktype = SOCK_STREAM;
+    hints.ai_protocol = 0;
+    hints.ai_addrlen        = 0;
+    hints.ai_addr           = NULL;
+    hints.ai_canonname      = NULL;
+    hints.ai_next           = NULL;
 
-    if (record_fname)
-    {
-        record_file = fopen(record_fname, "wb");
-        if (!record_file)
-        {
-            yaz_log(YLOG_FATAL|YLOG_ERRNO, "fopen %s", record_fname);
-            return 1;
-        }
-    }
-
-    memset(&myaddr, 0, sizeof myaddr);
-    myaddr.sin_family = AF_INET;
     pp = strchr(addr, ':');
     if (pp)
     {
         WRBUF w = wrbuf_alloc();
-        struct hostent *he;
-
         wrbuf_write(w, addr, pp - addr);
-        wrbuf_puts(w, "");
-
-        he = gethostbyname(wrbuf_cstr(w));
-        wrbuf_destroy(w);
-        if (!he)
-        {
-            yaz_log(YLOG_FATAL, "Unable to resolve '%s'", addr);
-            return 1;
+        if (!strcmp(wrbuf_cstr(w), "@"))
+        {   /* IPV4 + IPV6 .. same as YAZ */
+            ipv6_only = 0;
+            hints.ai_flags = AI_PASSIVE;
+            hints.ai_family = AF_INET6;
+            error = getaddrinfo(0, pp + 1, &hints, &ai);
         }
-        memcpy(&myaddr.sin_addr.s_addr, he->h_addr_list[0], he->h_length);
-        port = atoi(pp + 1);
+        else
+            error = getaddrinfo(wrbuf_cstr(w), pp + 1, &hints, &ai);
+        wrbuf_destroy(w);
     }
     else
     {
-        port = atoi(addr);
-        myaddr.sin_addr.s_addr = INADDR_ANY;
+        /* default for no host given is IPV4 */
+        hints.ai_flags = AI_PASSIVE;
+        hints.ai_family = AF_INET;
+        error = getaddrinfo(0, addr, &hints, &ai);
     }
-
-    myaddr.sin_port = htons(port);
-
-    if (!(p = getprotobyname("tcp"))) {
+    if (error)
+    {
+        yaz_log(YLOG_FATAL, "Failed to resolve %s: %s", addr,
+                gai_strerror(error));
         return 1;
     }
-    if ((l = socket(PF_INET, SOCK_STREAM, p->p_proto)) < 0)
+    l = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol);
+    if (l < 0)
+    {
         yaz_log(YLOG_FATAL|YLOG_ERRNO, "socket");
-    if (setsockopt(l, SOL_SOCKET, SO_REUSEADDR, (char*)
-                    &one, sizeof(one)) < 0)
+        freeaddrinfo(ai);
         return 1;
-
-    if (bind(l, (struct sockaddr *) &myaddr, sizeof myaddr) < 0)
+    }
+    if (ipv6_only >= 0 &&
+        setsockopt(l, IPPROTO_IPV6, IPV6_V6ONLY, &ipv6_only, sizeof(ipv6_only)))
     {
-        yaz_log(YLOG_FATAL|YLOG_ERRNO, "bind");
+        yaz_log(YLOG_FATAL|YLOG_ERRNO, "setsockopt IPV6_V6ONLY %s %d", addr,
+            ipv6_only);
+        freeaddrinfo(ai);
+        CLOSESOCKET(l);
         return 1;
     }
+    if (setsockopt(l, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)))
+    {
+        yaz_log(YLOG_FATAL|YLOG_ERRNO, "setsockopt SO_REUSEADDR %s", addr);
+        freeaddrinfo(ai);
+        CLOSESOCKET(l);
+        return 1;
+    }
+    if (bind(l, ai->ai_addr, ai->ai_addrlen) < 0)
+    {
+        yaz_log(YLOG_FATAL|YLOG_ERRNO, "bind %s", addr);
+        freeaddrinfo(ai);
+        CLOSESOCKET(l);
+        return 1;
+    }
+    freeaddrinfo(ai);
     if (listen(l, SOMAXCONN) < 0)
     {
-        yaz_log(YLOG_FATAL|YLOG_ERRNO, "listen");
+        yaz_log(YLOG_FATAL|YLOG_ERRNO, "listen %s", addr);
+        CLOSESOCKET(l);
         return 1;
     }
 
+    if (record_fname)
+    {
+        record_file = fopen(record_fname, "wb");
+        if (!record_file)
+        {
+            yaz_log(YLOG_FATAL|YLOG_ERRNO, "fopen %s", record_fname);
+            CLOSESOCKET(l);
+            return 1;
+        }
+    }
     server->http_server = http_server_create();
 
     server->http_server->record_file = record_file;
index 984bab6..50796eb 100644 (file)
@@ -23,7 +23,7 @@
        <set name="pz:apdulog" value="1"/>
 
        <set name="pz:maxrecs" value="3" />
-       <set name="pz:extendrecs" value="6" />
+       <set name="pz:extendrecs" value="3" />
       </settings>
 
       <metadata name="url" merge="unique"/>
index f14ba5c..8161687 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <show><status>OK</status>
-<activeclients>0</activeclients>
+<activeclients>1</activeclients>
 <merged>6</merged>
 <total>17</total>
 <start>0</start>
index 2a6fcee..e7568c7 100644 (file)
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <show><status>OK</status>
-<activeclients>0</activeclients>
-<merged>8</merged>
+<activeclients>1</activeclients>
+<merged>11</merged>
 <total>31</total>
 <start>0</start>
-<num>8</num>
+<num>11</num>
 <hit>
  <md-title>APPLIED GEOLOGY FILE</md-title>
  <location id="z3950.indexdata.com/gils"
  <relevance>0</relevance>
  <relevance_info>
 relevance = 0;
-idf[1] = log(((1 + total(8))/termoccur(0));
+idf[1] = log(((1 + total(11))/termoccur(0));
 the: relevance += 100000 * tf[1](0.000000) * idf[1](0.000000) (0);
 score = relevance(0);
  </relevance_info>
  <recid>content: title applied geology file author medium book</recid>
 </hit>
 <hit>
+ <md-title>CORE AND CUTTINGS IN NBMG &apos;LIBRARY&apos;</md-title>
+ <location id="z3950.indexdata.com/gils"
+    name="Index Data GILS test server" checksum="3293507132">
+  <md-title>CORE AND CUTTINGS IN NBMG &apos;LIBRARY&apos;</md-title>
+ </location>
+ <count>1</count>
+ <relevance>0</relevance>
+ <relevance_info>
+relevance = 0;
+idf[1] = log(((1 + total(11))/termoccur(0));
+the: relevance += 100000 * tf[1](0.000000) * idf[1](0.000000) (0);
+score = relevance(0);
+ </relevance_info>
+ <recid>content: title core and cuttings in nbmg library author medium book</recid>
+</hit>
+<hit>
  <md-title>ELECTRIC LOG LIBRARY</md-title>
  <location id="z3950.indexdata.com/gils"
     name="Index Data GILS test server" checksum="2770930265">
@@ -31,7 +47,7 @@ score = relevance(0);
  <relevance>0</relevance>
  <relevance_info>
 relevance = 0;
-idf[1] = log(((1 + total(8))/termoccur(0));
+idf[1] = log(((1 + total(11))/termoccur(0));
 the: relevance += 100000 * tf[1](0.000000) * idf[1](0.000000) (0);
 score = relevance(0);
  </relevance_info>
@@ -47,7 +63,7 @@ score = relevance(0);
  <relevance>0</relevance>
  <relevance_info>
 relevance = 0;
-idf[1] = log(((1 + total(8))/termoccur(0));
+idf[1] = log(((1 + total(11))/termoccur(0));
 the: relevance += 100000 * tf[1](0.000000) * idf[1](0.000000) (0);
 score = relevance(0);
  </relevance_info>
@@ -63,13 +79,45 @@ score = relevance(0);
  <relevance>0</relevance>
  <relevance_info>
 relevance = 0;
-idf[1] = log(((1 + total(8))/termoccur(0));
+idf[1] = log(((1 + total(11))/termoccur(0));
 the: relevance += 100000 * tf[1](0.000000) * idf[1](0.000000) (0);
 score = relevance(0);
  </relevance_info>
  <recid>content: title mine map index author medium book</recid>
 </hit>
 <hit>
+ <md-title>MINERAL OCCURRENCES, DEPOSITS, PROSPECTS, AND MINES</md-title>
+ <location id="z3950.indexdata.com/gils"
+    name="Index Data GILS test server" checksum="3119314843">
+  <md-title>MINERAL OCCURRENCES, DEPOSITS, PROSPECTS, AND MINES</md-title>
+ </location>
+ <count>1</count>
+ <relevance>0</relevance>
+ <relevance_info>
+relevance = 0;
+idf[1] = log(((1 + total(11))/termoccur(0));
+the: relevance += 100000 * tf[1](0.000000) * idf[1](0.000000) (0);
+score = relevance(0);
+ </relevance_info>
+ <recid>content: title mineral occurrences deposits prospects and mines author medium book</recid>
+</hit>
+<hit>
+ <md-title>THESES ON NEVADA GEOLOGY</md-title>
+ <location id="z3950.indexdata.com/gils"
+    name="Index Data GILS test server" checksum="3467699421">
+  <md-title>THESES ON NEVADA GEOLOGY</md-title>
+ </location>
+ <count>1</count>
+ <relevance>0</relevance>
+ <relevance_info>
+relevance = 0;
+idf[1] = log(((1 + total(11))/termoccur(0));
+the: relevance += 100000 * tf[1](0.000000) * idf[1](0.000000) (0);
+score = relevance(0);
+ </relevance_info>
+ <recid>content: title theses on nevada geology author medium book</recid>
+</hit>
+<hit>
  <md-title>UTAH CRIB FILE</md-title>
  <location id="z3950.indexdata.com/gils"
     name="Index Data GILS test server" checksum="2248353398">
@@ -79,7 +127,7 @@ score = relevance(0);
  <relevance>0</relevance>
  <relevance_info>
 relevance = 0;
-idf[1] = log(((1 + total(8))/termoccur(0));
+idf[1] = log(((1 + total(11))/termoccur(0));
 the: relevance += 100000 * tf[1](0.000000) * idf[1](0.000000) (0);
 score = relevance(0);
  </relevance_info>
@@ -95,7 +143,7 @@ score = relevance(0);
  <relevance>0</relevance>
  <relevance_info>
 relevance = 0;
-idf[1] = log(((1 + total(8))/termoccur(0));
+idf[1] = log(((1 + total(11))/termoccur(0));
 the: relevance += 100000 * tf[1](0.000000) * idf[1](0.000000) (0);
 score = relevance(0);
  </relevance_info>
@@ -111,7 +159,7 @@ score = relevance(0);
  <relevance>0</relevance>
  <relevance_info>
 relevance = 0;
-idf[1] = log(((1 + total(8))/termoccur(0));
+idf[1] = log(((1 + total(11))/termoccur(0));
 the: relevance += 100000 * tf[1](0.000000) * idf[1](0.000000) (0);
 score = relevance(0);
  </relevance_info>
@@ -127,7 +175,7 @@ score = relevance(0);
  <relevance>0</relevance>
  <relevance_info>
 relevance = 0;
-idf[1] = log(((1 + total(8))/termoccur(0));
+idf[1] = log(((1 + total(11))/termoccur(0));
 the: relevance += 100000 * tf[1](0.000000) * idf[1](0.000000) (0);
 score = relevance(0);
  </relevance_info>
index ff745df..dbe89d9 100755 (executable)
@@ -13,7 +13,7 @@ F=''
 for p in $PATH; do
     if test -x $p/yaz-ztest -a -x $p/yaz-client; then
        VERSION=`$p/yaz-client -V|awk '{print $3;}'|awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
-        if test $VERSION -ge 4000000; then
+        if test $VERSION -ge 4002052; then
             F=$p/yaz-ztest
             break
         fi
index 5cb76eb..fe72f49 100644 (file)
@@ -2,9 +2,9 @@
 <bytarget><status>OK</status>
 <target><id>localhost:9999/db1</id>
 <name>db1</name>
-<hits>22</hits>
+<hits>23</hits>
 <diagnostic>0</diagnostic>
-<records>22</records>
+<records>23</records>
 <state>Client_Idle</state>
 </target>
 <target><id>id_solr</id>
index a651123..9a1e627 100644 (file)
@@ -11,7 +11,7 @@
 <term>
 <id>localhost:9999/db1</id>
 <name>db1</name>
-<frequency>22</frequency>
+<frequency>23</frequency>
 <state>Client_Idle</state>
 <diagnostic>0</diagnostic>
 </term>
 <term><name>1974</name><frequency>2</frequency></term>
 <term><name>1980</name><frequency>2</frequency></term>
 <term><name>1987</name><frequency>2</frequency></term>
+<term><name>1991</name><frequency>2</frequency></term>
 <term><name>1992</name><frequency>2</frequency></term>
 <term><name>1993</name><frequency>2</frequency></term>
 <term><name>1997</name><frequency>2</frequency></term>
 <term><name>1968</name><frequency>1</frequency></term>
 <term><name>1972</name><frequency>1</frequency></term>
-<term><name>1973</name><frequency>1</frequency></term>
 </list>
 </termlist>
\ No newline at end of file
index c05f58f..cb861fc 100644 (file)
@@ -12,7 +12,7 @@
 <term>
 <id>localhost:9999/db1</id>
 <name>db1</name>
-<frequency>22</frequency>
+<frequency>23</frequency>
 <state>Client_Idle</state>
 <diagnostic>0</diagnostic>
 </term>
 <term><name>1974</name><frequency>2</frequency></term>
 <term><name>1980</name><frequency>2</frequency></term>
 <term><name>1987</name><frequency>2</frequency></term>
+<term><name>1991</name><frequency>2</frequency></term>
 <term><name>1992</name><frequency>2</frequency></term>
 <term><name>1993</name><frequency>2</frequency></term>
 <term><name>1997</name><frequency>2</frequency></term>
 <term><name>1968</name><frequency>1</frequency></term>
 <term><name>1972</name><frequency>1</frequency></term>
-<term><name>1973</name><frequency>1</frequency></term>
 </list>
 </termlist>
\ No newline at end of file
index 5cb76eb..fe72f49 100644 (file)
@@ -2,9 +2,9 @@
 <bytarget><status>OK</status>
 <target><id>localhost:9999/db1</id>
 <name>db1</name>
-<hits>22</hits>
+<hits>23</hits>
 <diagnostic>0</diagnostic>
-<records>22</records>
+<records>23</records>
 <state>Client_Idle</state>
 </target>
 <target><id>id_solr</id>
index b1c2baa..0613a8e 100644 (file)
@@ -1,10 +1,24 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <show><status>OK</status>
 <activeclients>0</activeclients>
-<merged>6</merged>
-<total>7</total>
+<merged>22</merged>
+<total>23</total>
 <start>0</start>
-<num>6</num>
+<num>20</num>
+<hit>
+ <md-title>Internet world</md-title>
+ <md-date>1992</md-date>
+ <md-description>Title from caption</md-description>
+ <location id="localhost:9999/db1"
+    name="db1" checksum="2093092631">
+  <md-title>Internet world</md-title>
+  <md-date>1992</md-date>
+  <md-description>Title from caption</md-description>
+ </location>
+ <count>1</count>
+ <relevance>312063</relevance>
+ <recid>content: title internet world</recid>
+</hit>
 <hit>
  <md-title>How to program a computer</md-title>
  <md-author>Jack Collins</md-author>
@@ -19,7 +33,7 @@
   <md-author>Jack Collins</md-author>
  </location>
  <count>2</count>
- <relevance>69043</relevance>
+ <relevance>187238</relevance>
  <recid>content: title how to program a computer author jack collins</recid>
 </hit>
 <hit>
@@ -33,7 +47,7 @@
   <md-date>1977</md-date>
  </location>
  <count>1</count>
- <relevance>57536</relevance>
+ <relevance>156031</relevance>
  <recid>content: title computer science technology</recid>
 </hit>
 <hit>
   <md-description>Vols. 2, 8: Missoula, Mont. : Published by Scholars Press for Biblical Research Associates</md-description>
  </location>
  <count>1</count>
- <relevance>57536</relevance>
+ <relevance>156031</relevance>
  <recid>content: title the computer bible</recid>
 </hit>
 <hit>
+ <md-title>Internet</md-title>
+ <md-title-remainder>mailing lists</md-title-remainder>
+ <md-date>1993</md-date>
+ <md-description>Includes index</md-description>
+ <location id="localhost:9999/db1"
+    name="db1" checksum="1567573730">
+  <md-title>Internet</md-title>
+  <md-title-remainder>mailing lists</md-title-remainder>
+  <md-date>1993</md-date>
+  <md-description>Includes index</md-description>
+ </location>
+ <count>1</count>
+ <relevance>78015</relevance>
+ <recid>content: title internet</recid>
+</hit>
+<hit>
+ <md-title>A plan for community college computer development</md-title>
+ <md-date>1971</md-date>
+ <md-description>Cover title</md-description>
+ <location id="localhost:9999/db1"
+    name="db1" checksum="2793784499">
+  <md-title>A plan for community college computer development</md-title>
+  <md-date>1971</md-date>
+  <md-description>Cover title</md-description>
+ </location>
+ <count>1</count>
+ <relevance>66870</relevance>
+ <recid>content: title a plan for community college computer development</recid>
+</hit>
+<hit>
+ <md-title>Washington metropolitan area rail computer feasibility study;</md-title>
+ <md-title-remainder>final report</md-title-remainder>
+ <md-date>1971</md-date>
+ <md-author>Englund, Carl R</md-author>
+ <md-description>&quot;Contract DOT-UT-10003.&quot;</md-description>
+ <location id="localhost:9999/db1"
+    name="db1" checksum="2968957466">
+  <md-title>Washington metropolitan area rail computer feasibility study;</md-title>
+  <md-title-remainder>final report</md-title-remainder>
+  <md-date>1971</md-date>
+  <md-author>Englund, Carl R</md-author>
+  <md-description>&quot;Contract DOT-UT-10003.&quot;</md-description>
+ </location>
+ <count>1</count>
+ <relevance>66870</relevance>
+ <recid>content: title washington metropolitan area rail computer feasibility study author englund carl r</recid>
+</hit>
+<hit>
  <md-title>The Puget Sound Region</md-title>
  <md-title-remainder>a portfolio of thematic computer maps</md-title-remainder>
  <md-date>1974</md-date>
   <md-description>Scale of maps ca. 1:1,000,000</md-description>
  </location>
  <count>1</count>
- <relevance>23973</relevance>
+ <relevance>65013</relevance>
  <recid>content: title the puget sound region author mairs john w</recid>
 </hit>
 <hit>
   <md-date>1974</md-date>
  </location>
  <count>1</count>
- <relevance>17260</relevance>
+ <relevance>46809</relevance>
  <recid>content: title computer processing of dynamic images from an anger scintillation camera</recid>
 </hit>
 <hit>
+ <md-title>The use of passwords for controlled access to computer resources</md-title>
+ <md-date>1977</md-date>
+ <md-author>Wood, Helen M</md-author>
+ <location id="localhost:9999/db1"
+    name="db1" checksum="3144130433">
+  <md-title>The use of passwords for controlled access to computer resources</md-title>
+  <md-date>1977</md-date>
+  <md-author>Wood, Helen M</md-author>
+ </location>
+ <count>1</count>
+ <relevance>46809</relevance>
+ <recid>content: title the use of passwords for controlled access to computer resources author wood helen m</recid>
+</hit>
+<hit>
+ <md-title>Check this out</md-title>
+ <md-title-remainder>library program models</md-title-remainder>
+ <md-date>1987</md-date>
+ <md-author>Seager, Andrew J</md-author>
+ <md-description>Distributed to depository libraries in microfiche</md-description>
+ <location id="localhost:9999/db1"
+    name="db1" checksum="1217227796">
+  <md-title>Check this out</md-title>
+  <md-title-remainder>library program models</md-title-remainder>
+  <md-date>1987</md-date>
+  <md-author>Seager, Andrew J</md-author>
+  <md-description>Distributed to depository libraries in microfiche</md-description>
+  <md-description>&quot;July 1987.&quot;</md-description>
+  <md-description>&quot;LP 87-403c.&quot;</md-description>
+ </location>
+ <count>1</count>
+ <relevance>0</relevance>
+ <recid>content: title check this out author seager andrew j</recid>
+</hit>
+<hit>
+ <md-title>Dealing with dropouts</md-title>
+ <md-title-remainder>the urban superintendents&apos; call to action</md-title-remainder>
+ <md-date>1987</md-date>
+ <md-author>Paulu, Nancy</md-author>
+ <md-description>Distributed to depository libraries in microfiche</md-description>
+ <location id="localhost:9999/db1"
+    name="db1" checksum="866881862">
+  <md-title>Dealing with dropouts</md-title>
+  <md-title-remainder>the urban superintendents&apos; call to action</md-title-remainder>
+  <md-date>1987</md-date>
+  <md-author>Paulu, Nancy</md-author>
+  <md-description>Distributed to depository libraries in microfiche</md-description>
+ </location>
+ <count>1</count>
+ <relevance>0</relevance>
+ <recid>content: title dealing with dropouts author paulu nancy</recid>
+</hit>
+<hit>
+ <md-title>Deuteronomy</md-title>
+ <md-date>1968</md-date>
+ <md-author>Oberst, Bruce</md-author>
+ <location id="localhost:9999/db1"
+    name="db1" checksum="2618611532">
+  <md-title>Deuteronomy</md-title>
+  <md-date>1968</md-date>
+  <md-author>Oberst, Bruce</md-author>
+ </location>
+ <count>1</count>
+ <relevance>0</relevance>
+ <recid>content: title deuteronomy author oberst bruce</recid>
+</hit>
+<hit>
+ <md-title>FEDLINK services directory for fiscal year</md-title>
+ <md-description>Description based on: 1990</md-description>
+ <location id="localhost:9999/db1"
+    name="db1" checksum="1042054829">
+  <md-title>FEDLINK services directory for fiscal year</md-title>
+  <md-description>Description based on: 1990</md-description>
+ </location>
+ <count>1</count>
+ <relevance>0</relevance>
+ <recid>content: title fedlink services directory for fiscal year</recid>
+</hit>
+<hit>
+ <md-title>Four psalms</md-title>
+ <md-title-remainder>XXIII, XXXVI, LII, CXXI</md-title-remainder>
+ <md-date>1980</md-date>
+ <md-author>Smith, George Adam</md-author>
+ <location id="localhost:9999/db1"
+    name="db1" checksum="2268265598">
+  <md-title>Four psalms</md-title>
+  <md-title-remainder>XXIII, XXXVI, LII, CXXI</md-title-remainder>
+  <md-date>1980</md-date>
+  <md-author>Smith, George Adam</md-author>
+ </location>
+ <count>1</count>
+ <relevance>0</relevance>
+ <recid>content: title four psalms author smith george adam</recid>
+</hit>
+<hit>
+ <md-title>Info Canada</md-title>
+ <md-date>1991</md-date>
+ <md-description>Title from caption</md-description>
+ <location id="localhost:9999/db1"
+    name="db1" checksum="1917919664">
+  <md-title>Info Canada</md-title>
+  <md-date>1991</md-date>
+  <md-description>Title from caption</md-description>
+ </location>
+ <count>1</count>
+ <relevance>0</relevance>
+ <recid>content: title info canada</recid>
+</hit>
+<hit>
+ <md-title>National dissemination model for the I&apos;M SPECIAL Program of Physical Education for the Handicapped, 1983-1986</md-title>
+ <md-title-remainder>final report, I&apos;M SPECIAL network</md-title-remainder>
+ <md-date>1986</md-date>
+ <md-description>Distributed to depository libraries in microfiche</md-description>
+ <location id="localhost:9999/db1"
+    name="db1" checksum="691708895">
+  <md-title>National dissemination model for the I&apos;M SPECIAL Program of Physical Education for the Handicapped, 1983-1986</md-title>
+  <md-title-remainder>final report, I&apos;M SPECIAL network</md-title-remainder>
+  <md-date>1986</md-date>
+  <md-description>Distributed to depository libraries in microfiche</md-description>
+ </location>
+ <count>1</count>
+ <relevance>0</relevance>
+ <recid>content: title national dissemination model for the i m special program of physical education for the handicapped</recid>
+</hit>
+<hit>
+ <md-title>NDN, sharing success to improve schools</md-title>
+ <md-date>1991</md-date>
+ <md-description>At head of title: National Diffusion Network, NDN</md-description>
+ <location id="localhost:9999/db1"
+    name="db1" checksum="516535928">
+  <md-title>NDN, sharing success to improve schools</md-title>
+  <md-date>1991</md-date>
+  <md-description>At head of title: National Diffusion Network, NDN</md-description>
+  <md-description>Shipping list no.: 91-198-P</md-description>
+  <md-description>&quot;January 1991&quot;--P. [5]</md-description>
+  <md-description>&quot;PIP 91-836&quot;--P. [5]</md-description>
+ </location>
+ <count>1</count>
+ <relevance>0</relevance>
+ <recid>content: title ndn sharing success to improve schools</recid>
+</hit>
+<hit>
  <md-title>Reconstruction tomography in diagnostic radiology and nuclear medicine</md-title>
  <md-title-remainder>proceedings of the workshop</md-title-remainder>
  <md-date>1977</md-date>
  <relevance>0</relevance>
  <recid>content: title reconstruction tomography in diagnostic radiology and nuclear medicine</recid>
 </hit>
+<hit>
+ <md-title>Technology programs that work</md-title>
+ <md-date>1984</md-date>
+ <md-description>&quot;This directory was developed by the Technology for the National Diffusion Network Project, Teachers College, Columbia University pursuant to contract number OE-300-83-0253, U.S. Department of Education&quot;--T.p. verso</md-description>
+ <location id="localhost:9999/db1"
+    name="db1" checksum="1392400763">
+  <md-title>Technology programs that work</md-title>
+  <md-date>1984</md-date>
+  <md-description>&quot;Spons agency Office of Educational Research and Improvement&quot;--Doc. resume</md-description>
+  <md-description>&quot;This directory was developed by the Technology for the National Diffusion Network Project, Teachers College, Columbia University pursuant to contract number OE-300-83-0253, U.S. Department of Education&quot;--T.p. verso</md-description>
+  <md-description>Distributed to depository libraries in microfiche</md-description>
+  <md-description>&quot;December 1984.&quot;</md-description>
+  <md-description>Includes indexes</md-description>
+ </location>
+ <count>1</count>
+ <relevance>0</relevance>
+ <recid>content: title technology programs that work</recid>
+</hit>
 </show>
\ No newline at end of file
index 8b8a807..129dfa4 100644 (file)
@@ -2,8 +2,8 @@
 <bytarget><status>OK</status>
 <target><id>localhost:9999/db1</id>
 <name>db1</name>
-<hits>7</hits>
+<hits>23</hits>
 <diagnostic>0</diagnostic>
-<records>7</records>
+<records>23</records>
 <state>Client_Idle</state>
 </target></bytarget>
\ No newline at end of file
index f78c7dc..4ecc7ee 100644 (file)
@@ -4,30 +4,53 @@
 <term>
 <id>localhost:9999/db1</id>
 <name>db1</name>
-<frequency>7</frequency>
+<frequency>23</frequency>
 <state>Client_Idle</state>
 <diagnostic>0</diagnostic>
 </term>
 </list>
 <list name="author">
 <term><name>Jack Collins</name><frequency>2</frequency></term>
+<term><name>Adam, James</name><frequency>1</frequency></term>
+<term><name>Carter, Bill</name><frequency>1</frequency></term>
+<term><name>Englund, Carl R</name><frequency>1</frequency></term>
 <term><name>Mairs, John W</name><frequency>1</frequency></term>
+<term><name>Oberst, Bruce</name><frequency>1</frequency></term>
+<term><name>Paulu, Nancy</name><frequency>1</frequency></term>
+<term><name>Seager, Andrew J</name><frequency>1</frequency></term>
+<term><name>Smith, George Adam</name><frequency>1</frequency></term>
+<term><name>Wood, Helen M</name><frequency>1</frequency></term>
 </list>
 <list name="subject">
-<term><name>Bible</name><frequency>1</frequency></term>
+<term><name>Bible</name><frequency>5</frequency></term>
+<term><name>Internet (Computer network)</name><frequency>2</frequency></term>
+<term><name>United States</name><frequency>2</frequency></term>
 <term><name>Bible. O.T</name><frequency>1</frequency></term>
+<term><name>Bible. O.T. Deuteronomy</name><frequency>1</frequency></term>
 <term><name>Cartography</name><frequency>1</frequency></term>
-<term><name>Imaging systems in medicine</name><frequency>1</frequency></term>
-<term><name>Optical pattern recognition</name><frequency>1</frequency></term>
-<term><name>Puget Sound region (Wash.)</name><frequency>1</frequency></term>
-<term><name>Radioisotope scanning</name><frequency>1</frequency></term>
-<term><name>Scintillation cameras</name><frequency>1</frequency></term>
-<term><name>Tomography</name><frequency>1</frequency></term>
+<term><name>Community colleges</name><frequency>1</frequency></term>
+<term><name>Computer Systems</name><frequency>1</frequency></term>
+<term><name>Computer networks</name><frequency>1</frequency></term>
+<term><name>Computers</name><frequency>1</frequency></term>
+<term><name>Demonstration centers in education</name><frequency>1</frequency></term>
+<term><name>Dropouts</name><frequency>1</frequency></term>
+<term><name>Educational innovations</name><frequency>1</frequency></term>
+<term><name>Educational technology</name><frequency>1</frequency></term>
+<term><name>FEDLINK (Network)</name><frequency>1</frequency></term>
 </list>
 <list name="date">
+<term><name>1977</name><frequency>3</frequency></term>
+<term><name>1971</name><frequency>2</frequency></term>
 <term><name>1974</name><frequency>2</frequency></term>
-<term><name>1977</name><frequency>2</frequency></term>
+<term><name>1980</name><frequency>2</frequency></term>
+<term><name>1987</name><frequency>2</frequency></term>
+<term><name>1991</name><frequency>2</frequency></term>
+<term><name>1993</name><frequency>2</frequency></term>
+<term><name>1968</name><frequency>1</frequency></term>
+<term><name>1972</name><frequency>1</frequency></term>
 <term><name>1973</name><frequency>1</frequency></term>
-<term><name>1980</name><frequency>1</frequency></term>
+<term><name>1984</name><frequency>1</frequency></term>
+<term><name>1986</name><frequency>1</frequency></term>
+<term><name>1992</name><frequency>1</frequency></term>
 </list>
 </termlist>
\ No newline at end of file
index 20fa7b7..1d820c7 100644 (file)
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <show><status>OK</status>
 <activeclients>0</activeclients>
-<merged>121</merged>
-<total>2037</total>
+<merged>122</merged>
+<total>2038</total>
 <start>0</start>
 <num>20</num>
 <hit>
@@ -18,7 +18,7 @@
   <md-author>Woodward, C. Michael</md-author>
  </location>
  <count>1</count>
- <relevance>100676</relevance>
+ <relevance>105534</relevance>
  <recid>content: title adobe illustrator for the mac author woodward c michael</recid>
 </hit>
 <hit>
@@ -30,7 +30,7 @@
   <md-date>1998</md-date>
  </location>
  <count>1</count>
- <relevance>100676</relevance>
+ <relevance>105534</relevance>
  <recid>content: title advanced computer performance modeling and simulation</recid>
 </hit>
 <hit>
@@ -48,7 +48,7 @@
   <md-description>&quot;April 2000.&quot;</md-description>
  </location>
  <count>1</count>
- <relevance>100676</relevance>
+ <relevance>105534</relevance>
  <recid>content: title cyberterrorism and computer crimes author aldrich richard w</recid>
 </hit>
 <hit>
@@ -64,7 +64,7 @@
   <md-author>Kaasgaard, Klaus</md-author>
  </location>
  <count>1</count>
- <relevance>92286</relevance>
+ <relevance>96739</relevance>
  <recid>content: title software design and usability author kaasgaard klaus</recid>
 </hit>
 <hit>
@@ -80,7 +80,7 @@
   <md-description>Explains what computer hacking is, who does it, and how dangerous it can be</md-description>
  </location>
  <count>1</count>
- <relevance>88255</relevance>
+ <relevance>92513</relevance>
  <recid>content: title everything you need to know about the dangers of computer hacking author knittel john</recid>
 </hit>
 <hit>
@@ -94,7 +94,7 @@
   <md-author>Cook, Barry M</md-author>
  </location>
  <count>1</count>
- <relevance>88091</relevance>
+ <relevance>92342</relevance>
  <recid>content: title computer peripherals author cook barry m</recid>
 </hit>
 <hit>
   <md-description>Discusses a variety of educational and game software for children  with suggestions for setting up a computer system. Includes a 3 1/2 in. disk with 6 shareware programs for children</md-description>
  </location>
  <count>1</count>
- <relevance>77371</relevance>
+ <relevance>81105</relevance>
  <recid>content: title kids computer book</recid>
 </hit>
 <hit>
   <md-author>Steinbacher, Raymond</md-author>
  </location>
  <count>1</count>
- <relevance>75507</relevance>
+ <relevance>79150</relevance>
  <recid>content: title computer friendly author steinbacher raymond</recid>
 </hit>
 <hit>
   <md-description>&quot;Also published as Parliamentary Paper E 31AO&quot;--T.p. verso</md-description>
  </location>
  <count>1</count>
- <relevance>75507</relevance>
+ <relevance>79150</relevance>
  <recid>content: title computer misuse</recid>
 </hit>
 <hit>
   <md-author>Ross, Keith W</md-author>
  </location>
  <count>1</count>
- <relevance>75507</relevance>
+ <relevance>79150</relevance>
  <recid>content: title computer networking author ross keith w</recid>
 </hit>
 <hit>
   <md-description>Includes index</md-description>
  </location>
  <count>1</count>
- <relevance>75507</relevance>
+ <relevance>79150</relevance>
  <recid>content: title coreldraw for windows author davis phyllis</recid>
 </hit>
 <hit>
   <md-description>&quot;Covers Quicken deluxe 2000 for the Mac&quot;--Cover</md-description>
  </location>
  <count>1</count>
- <relevance>75507</relevance>
+ <relevance>79150</relevance>
  <recid>content: title quicken for the mac author langer maria</recid>
 </hit>
 <hit>
   <md-date>1998</md-date>
  </location>
  <count>1</count>
- <relevance>75507</relevance>
+ <relevance>79150</relevance>
  <recid>content: title sicherheit und schutz im netz</recid>
 </hit>
 <hit>
   <md-description>Includes index</md-description>
  </location>
  <count>1</count>
- <relevance>75507</relevance>
+ <relevance>79150</relevance>
  <recid>content: title unix secure shell author carasik anne h</recid>
 </hit>
 <hit>
   <md-description>&quot;IEEE catalog number 99EX370&quot;--T.p. verso</md-description>
  </location>
  <count>1</count>
- <relevance>71312</relevance>
+ <relevance>74753</relevance>
  <recid>content: title eight international conference on computer communications and networks</recid>
 </hit>
 <hit>
   <md-description>Includes index</md-description>
  </location>
  <count>1</count>
- <relevance>67117</relevance>
+ <relevance>70356</relevance>
  <recid>content: title building storage networks author farley marc</recid>
 </hit>
 <hit>
   <md-description>Includes index</md-description>
  </location>
  <count>1</count>
- <relevance>67117</relevance>
+ <relevance>70356</relevance>
  <recid>content: title complete cl author malaga ernie</recid>
 </hit>
 <hit>
   <md-author>Watt, Alan H</md-author>
  </location>
  <count>1</count>
- <relevance>67117</relevance>
+ <relevance>70356</relevance>
  <recid>content: title d games author watt alan h</recid>
 </hit>
 <hit>
   <md-description>Title from caption</md-description>
  </location>
  <count>1</count>
- <relevance>67117</relevance>
+ <relevance>70356</relevance>
  <recid>content: title internet world</recid>
 </hit>
 <hit>
   <md-author>Denoncourt, Don</md-author>
  </location>
  <count>1</count>
- <relevance>67117</relevance>
+ <relevance>70356</relevance>
  <recid>content: title java applications strategies for the as author denoncourt don</recid>
 </hit>
 </show>
\ No newline at end of file