DEBIAN_DIST="wheezy squeeze"
UBUNTU_DIST="quantal precise oneiric natty lucid"
CENTOS_DIST="centos5 centos6"
-VERSION=1.6.28
+VERSION=1.6.29
+--- 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
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])
+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.
manpage.refs
*.[0-8]
local.ent
+local0.ent
htmlhelp.hhp
toc.hhc
manref.xml
<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>
</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>
--- /dev/null
+<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>
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)
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;
#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>
/* 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 */
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)
#include <stdio.h>
#ifdef WIN32
-#include <winsock.h>
+#include <winsock2.h>
+#include <ws2tcpip.h>
typedef int socklen_t;
#endif
#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>
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;
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);
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;
}
{
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);
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);
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");
/* 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;
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);
{
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;
<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"/>
<?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>
<?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 'LIBRARY'</md-title>
+ <location id="z3950.indexdata.com/gils"
+ name="Index Data GILS test server" checksum="3293507132">
+ <md-title>CORE AND CUTTINGS IN NBMG 'LIBRARY'</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">
<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>
<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>
<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">
<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>
<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>
<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>
<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>
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
<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>
<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
<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
<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>
<?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>
<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>
<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>"Contract DOT-UT-10003."</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>"Contract DOT-UT-10003."</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>"July 1987."</md-description>
+ <md-description>"LP 87-403c."</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' 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' 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'M SPECIAL Program of Physical Education for the Handicapped, 1983-1986</md-title>
+ <md-title-remainder>final report, I'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'M SPECIAL Program of Physical Education for the Handicapped, 1983-1986</md-title>
+ <md-title-remainder>final report, I'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>"January 1991"--P. [5]</md-description>
+ <md-description>"PIP 91-836"--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>"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"--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>"Spons agency Office of Educational Research and Improvement"--Doc. resume</md-description>
+ <md-description>"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"--T.p. verso</md-description>
+ <md-description>Distributed to depository libraries in microfiche</md-description>
+ <md-description>"December 1984."</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
<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
<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
<?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>
<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>
<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>
<md-description>"April 2000."</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>
<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>
<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>
<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>"Also published as Parliamentary Paper E 31AO"--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>"Covers Quicken deluxe 2000 for the Mac"--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>"IEEE catalog number 99EX370"--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