Merge branch 'bytarget_block' of ssh://git.indexdata.com/home/git/pub/pazpar2 into...
authorDennis Schafroth <dennis@indexdata.com>
Mon, 7 Nov 2011 10:14:31 +0000 (11:14 +0100)
committerDennis Schafroth <dennis@indexdata.com>
Mon, 7 Nov 2011 10:14:31 +0000 (11:14 +0100)
21 files changed:
debian/changelog
src/client.c
src/client.h
src/connection.c
src/http_command.c
src/settings.c
test/test_termlist_block.cfg [new file with mode: 0644]
test/test_termlist_block.res [new file with mode: 0644]
test/test_termlist_block.sh [new file with mode: 0755]
test/test_termlist_block.urls [new file with mode: 0644]
test/test_termlist_block_1.res [new file with mode: 0644]
test/test_termlist_block_10.res [new file with mode: 0644]
test/test_termlist_block_11.res [new file with mode: 0644]
test/test_termlist_block_2.res [new file with mode: 0644]
test/test_termlist_block_3.res [new file with mode: 0644]
test/test_termlist_block_4.res [new file with mode: 0644]
test/test_termlist_block_5.res [new file with mode: 0644]
test/test_termlist_block_6.res [new file with mode: 0644]
test/test_termlist_block_7.res [new file with mode: 0644]
test/test_termlist_block_8.res [new file with mode: 0644]
test/test_termlist_block_9.res [new file with mode: 0644]

index 9b82098..98e9494 100644 (file)
@@ -1,3 +1,9 @@
+pazpar2 (1.6.5-1indexdata) unstable; urgency=low
+
+  * Upstream
+
+ -- Dennis Schafroth <dennis@indexdata.com>  Tue, 01 Nov 2011 13:35:19 +0000
+
 pazpar2 (1.6.4-1indexdata) unstable; urgency=low
 
   * Upstream.
index 5df785d..8751137 100644 (file)
@@ -162,6 +162,11 @@ enum client_state client_get_state(struct client *cl)
     return cl->state;
 }
 
+void client_set_state_nb(struct client *cl, enum client_state st)
+{
+    cl->state = st;
+}
+
 void client_set_state(struct client *cl, enum client_state st)
 {
     int was_active = 0;
index 2fb8ada..9cc9666 100644 (file)
@@ -52,6 +52,7 @@ void client_show_raw_remove(struct client *cl, void *rr);
 const char *client_get_state_str(struct client *cl);
 enum client_state client_get_state(struct client *cl);
 void client_set_state(struct client *cl, enum client_state st);
+void client_set_state_nb(struct client *cl, enum client_state st);
 struct connection *client_get_connection(struct client *cl);
 struct session_database *client_get_database(struct client *cl);
 void client_set_database(struct client *cl, struct session_database *db);
index 9381b53..c5a8ab5 100644 (file)
@@ -93,10 +93,9 @@ struct connection {
     struct client *client;
     char *zproxy;
     enum {
-        Conn_Resolving,
+        Conn_Closed,
         Conn_Connecting,
-        Conn_Open,
-        Conn_Dead
+        Conn_Open
     } state;
     int operation_timeout;
     int session_timeout;
@@ -180,7 +179,7 @@ static struct connection *connection_create(struct client *cl,
     co->zproxy = 0;
     client_set_connection(cl, co);
     co->link = 0;
-    co->state = Conn_Resolving;
+    co->state = Conn_Closed;
     co->operation_timeout = operation_timeout;
     co->session_timeout = session_timeout;
     
@@ -278,9 +277,25 @@ void connection_continue(struct connection *co)
 {
     int r = ZOOM_connection_exec_task(co->link);
     if (!r)
-        yaz_log(YLOG_WARN, "No task was executed for connection");
-    iochan_setflags(co->iochan, ZOOM_connection_get_mask(co->link));
-    iochan_setfd(co->iochan, ZOOM_connection_get_socket(co->link));
+    {
+        const char *error, *addinfo;
+        int err;
+        if ((err = ZOOM_connection_error(co->link, &error, &addinfo)))
+        {
+            if (co->client)
+            {
+                yaz_log(YLOG_LOG, "Error %s from %s",
+                        error, client_get_id(co->client));
+                client_set_diagnostic(co->client, err);
+                client_set_state_nb(co->client, Client_Error);
+            }
+        }
+    }
+    else
+    {
+        iochan_setflags(co->iochan, ZOOM_connection_get_mask(co->link));
+        iochan_setfd(co->iochan, ZOOM_connection_get_socket(co->link));
+    }
 }
 
 static void connection_handler(IOCHAN iochan, int event)
@@ -359,7 +374,6 @@ static struct host *connection_get_host(struct connection *con)
 
 static int connection_connect(struct connection *con, iochan_man_t iochan_man)
 {
-    ZOOM_connection link = 0;
     struct host *host = connection_get_host(con);
     ZOOM_options zoptions = ZOOM_options_create();
     const char *auth;
@@ -395,7 +409,7 @@ static int connection_connect(struct connection *con, iochan_man_t iochan_man)
     if ((sru_version = session_setting_oneval(sdb, PZ_SRU_VERSION)) 
         && *sru_version)
         ZOOM_options_set(zoptions, "sru_version", sru_version);
-    if (!(link = ZOOM_connection_create(zoptions)))
+    if (!(con->link = ZOOM_connection_create(zoptions)))
     {
         yaz_log(YLOG_FATAL|YLOG_ERRNO, "Failed to create ZOOM Connection");
         ZOOM_options_destroy(zoptions);
@@ -407,21 +421,19 @@ static int connection_connect(struct connection *con, iochan_man_t iochan_man)
         char http_hostport[512];
         strcpy(http_hostport, "http://");
         strcat(http_hostport, host->hostport);
-        ZOOM_connection_connect(link, http_hostport, 0);
+        ZOOM_connection_connect(con->link, http_hostport, 0);
     }
     else
     {
-        ZOOM_connection_connect(link, host->hostport, 0);
+        ZOOM_connection_connect(con->link, host->hostport, 0);
     }
     
-    con->link = link;
     con->iochan = iochan_create(-1, connection_handler, 0, "connection_socket");
     con->state = Conn_Connecting;
     iochan_settimeout(con->iochan, con->operation_timeout);
     iochan_setdata(con->iochan, con);
     iochan_add(iochan_man, con->iochan);
 
-    /* this fragment is bad DRY: from client_prep_connection */
     client_set_state(con->client, Client_Connecting);
     ZOOM_options_destroy(zoptions);
     return 0;
index 04701d4..0662ff5 100644 (file)
@@ -534,7 +534,7 @@ static void termlist_response(struct http_channel *c)
 
 static void termlist_result_ready(void *data)
 {
-    struct http_channel *c = (struct http_channel) data;
+    struct http_channel *c = (struct http_channel *) data;
     yaz_log(c->http_sessions->log_level, "termlist watch released");
     termlist_response(c);
 }
index d355cf3..98adae9 100644 (file)
@@ -437,22 +437,10 @@ static void initialize_soft_settings(struct conf_service *service)
 static void prepare_target_dictionary(void *client_data, struct setting *set)
 {
     struct conf_service *service = (struct conf_service *) client_data;
-    struct setting_dictionary *dictionary = service->dictionary;
-
-    int i;
-    char *p;
 
     // If target address is not wildcard, add the database
     if (*set->target && !zurl_wildcard(set->target))
         create_database_for_service(set->target, service);
-
-    // Determine if we already have a dictionary entry
-    if (!strncmp(set->name, "pz:", 3) && (p = strchr(set->name + 3, ':')))
-        *(p + 1) = '\0';
-    for (i = 0; i < dictionary->num; i++)
-        if (!strcmp(dictionary->dict[i], set->name))
-            return;
-    yaz_log(YLOG_WARN, "Setting '%s' not configured as metadata", set->name);
 }
 
 void init_settings(struct conf_service *service)
diff --git a/test/test_termlist_block.cfg b/test/test_termlist_block.cfg
new file mode 100644 (file)
index 0000000..16425e2
--- /dev/null
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<pazpar2 xmlns="http://www.indexdata.com/pazpar2/1.0">
+  <!-- Used by test_preferred.sh -->
+  <server>
+    <listen port="9763"/>
+    <proxy host="localhost"/>
+    
+    <service>
+      <include src="z3950_indexdata_com_marc.xml"/>
+      <metadata name="url" merge="unique"/>
+      <metadata name="title" brief="yes" sortkey="skiparticle" merge="longest" rank="6" mergekey="required" />
+      <metadata name="title-remainder" brief="yes" merge="longest" rank="5"/>
+      <metadata name="isbn"/>
+      <metadata name="date" brief="yes" sortkey="numeric" type="year" merge="range"
+               termlist="yes"/>
+      <metadata name="author" brief="yes" termlist="yes" merge="longest" rank="2" mergekey="optional" />
+      <metadata name="subject" merge="unique" termlist="yes" rank="3"/>
+      <metadata name="id"/>
+      <metadata name="lccn" merge="unique"/>
+      <metadata name="description" brief="yes" merge="longest" rank="3"/>
+      
+      <metadata name="test-usersetting" brief="yes" setting="postproc"/>
+      <metadata name="test" setting="parameter"/>
+      <metadata name="test-usersetting-2" brief="yes"/>
+    </service>
+
+    <include src="*_service.xml"/> 
+    <include src="no_such_service.xml"/>
+
+  </server>
+  
+  
+</pazpar2>
+<!-- Keep this comment at the end of the file
+     Local variables:
+     mode: nxml
+     End:
+-->
diff --git a/test/test_termlist_block.res b/test/test_termlist_block.res
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/test/test_termlist_block.sh b/test/test_termlist_block.sh
new file mode 100755 (executable)
index 0000000..e7b1203
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+# srcdir might be set by make
+srcdir=${srcdir:-"."}
+
+#TODO set up solr target. For now use donut 
+#F=../solr/client.sh 
+#
+#rm -f solr.pid
+#$F -l solr.log -p ztest.pid -D @:9999
+#sleep 1
+#if test ! -f ztest.pid; then
+#    echo "yaz-ztest could not be started"
+#    exit 0
+#fi
+
+${srcdir}/run_pazpar2.sh test_termlist_block
+E=$?
+
+#kill `cat ztest.pid`
+#rm ztest.pid
+exit $E
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation: 2
+# sh-basic-offset: 4
+# End:
diff --git a/test/test_termlist_block.urls b/test/test_termlist_block.urls
new file mode 100644 (file)
index 0000000..07fd600
--- /dev/null
@@ -0,0 +1,11 @@
+http://localhost:9763/search.pz2?command=init&clear=1
+http://localhost:9763/search.pz2?session=1&command=settings&full_text_target%5Bid_ocw%5D=NO&use_url_proxy%5Bid_ocw%5D=0&pz:preferred%5Bid_ocw%5D=1&pz:piggyback%5Bid_ocw%5D=1&pz:authentication%5Bid_ocw%5D=idtest%2Fidtest36&pz:cclmap%3Asu%5Bid_ocw%5D=u%3D21+s%3Dal&use_thumbnails%5Bid_ocw%5D=1&pz:requestsyntax%5Bid_ocw%5D=xml&pz:name%5Bid_ocw%5D=MIT+OpenCourseWare&pz:cclmap%3Aissn%5Bid_ocw%5D=u%3D8&pz:cclmap%3Ati%5Bid_ocw%5D=u%3D4+s%3Dal&pz:cclmap%3Aau%5Bid_ocw%5D=u%3D1003+s%3Dal&pz:xslt%5Bid_ocw%5D=cf.xsl&pz:cclmap%3Aterm%5Bid_ocw%5D=u%3D1016+t%3Dl%2Cr+s%3Dal+2%3D102&pz:cclmap%3Aisbn%5Bid_ocw%5D=u%3D7&pz:queryencoding%5Bid_ocw%5D=UTF-8&pz:url%5Bid_ocw%5D=connect.indexdata.com%3A9000%2Fmit_opencourseware
+http://localhost:9763/search.pz2?session=1&command=search&query=su%3D%22computer%22
+4 http://localhost:9763/search.pz2?session=1&command=show&block=1
+http://localhost:9763/search.pz2?session=1&command=bytarget
+http://localhost:9763/search.pz2?session=1&command=termlist&block=1&name=xtargets%2Cauthor%2Csubject%2Cdate
+http://localhost:9763/search.pz2?session=1&command=settings&full_text_target%5Bid_solr%5D=NO&pz:termlist_term_count%5Bid_solr%5D=10&use_url_proxy%5Bid_solr%5D=0&pz:piggyback%5Bid_solr%5D=1&pz:preferred%5Bid_solr%5D=0&pz:block_timeout%5Bid_solr%5D=2&pz:cclmap%3Asu%5Bid_solr%5D=1%3Dsubject&pz:sru%5Bid_solr%5D=solr&use_thumbnails%5Bid_solr%5D=0&pz:name%5Bid_solr%5D=LOC+%28SOLR%29&pz:cclmap%3Aissn%5Bid_solr%5D=u%3D8&pz:cclmap%3Ati%5Bid_solr%5D=1%3Dtitle&pz:cclmap%3Aau%5Bid_solr%5D=1%3Dauthor&pz:xslt%5Bid_solr%5D=solr-pz2.xsl&pz:cclmap%3Aterm%5Bid_solr%5D=1%3Dtext+s%3Dal&pz:cclmap%3Aisbn%5Bid_solr%5D=1%3Disbn&pz:queryencoding%5Bid_solr%5D=UTF-8&pz:url%5Bid_solr%5D=ocs-test.indexdata.com%2Fsolr%2Fselect
+http://localhost:9763/search.pz2?session=1&command=search&query=su%3D%22computer%22
+4 http://localhost:9763/search.pz2?session=1&command=show&block=1
+http://localhost:9763/search.pz2?session=1&command=bytarget
+http://localhost:9763/search.pz2?session=1&command=termlist&block=1&name=xtargets%2Cauthor%2Csubject%2Cdate
diff --git a/test/test_termlist_block_1.res b/test/test_termlist_block_1.res
new file mode 100644 (file)
index 0000000..81ff9ff
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<init><status>OK</status><session>1</session><protocol>1</protocol></init>
\ No newline at end of file
diff --git a/test/test_termlist_block_10.res b/test/test_termlist_block_10.res
new file mode 100644 (file)
index 0000000..7578770
--- /dev/null
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bytarget><status>OK</status>
+<target><id>id_ocw</id>
+<name>MIT OpenCourseWare</name>
+<hits>0</hits>
+<diagnostic>114</diagnostic>
+<records>0</records>
+<state>Client_Error</state>
+</target>
+<target><id>id_solr</id>
+<name>LOC (SOLR)</name>
+<hits>1043</hits>
+<diagnostic>0</diagnostic>
+<records>100</records>
+<state>Client_Idle</state>
+</target></bytarget>
\ No newline at end of file
diff --git a/test/test_termlist_block_11.res b/test/test_termlist_block_11.res
new file mode 100644 (file)
index 0000000..9076038
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<termlist><activeclients>0</activeclients>
+<list name="xtargets">
+<term>
+<id>id_solr</id>
+<name>LOC (SOLR)</name>
+<frequency>1043</frequency>
+<state>Client_Idle</state>
+<diagnostic>0</diagnostic>
+</term>
+</list>
+<list name="author">
+<term><name>Norton, Peter</name><frequency>2</frequency></term>
+<term><name>Aldrich, Richard W</name><frequency>1</frequency></term>
+<term><name>Anderson, Robert H</name><frequency>1</frequency></term>
+<term><name>Arnold, Ken</name><frequency>1</frequency></term>
+<term><name>Burgess, Mark</name><frequency>1</frequency></term>
+<term><name>Carasik, Anne H</name><frequency>1</frequency></term>
+<term><name>Davis, Phyllis</name><frequency>1</frequency></term>
+<term><name>Dowd, Kevin</name><frequency>1</frequency></term>
+<term><name>Farley, Marc</name><frequency>1</frequency></term>
+<term><name>Gennick, Jonathan</name><frequency>1</frequency></term>
+<term><name>Hawke, Constance S</name><frequency>1</frequency></term>
+<term><name>Hopgood, Adrian A</name><frequency>1</frequency></term>
+<term><name>Kaasgaard, Klaus</name><frequency>1</frequency></term>
+<term><name>Knittel, John</name><frequency>1</frequency></term>
+<term><name>Loudon, Kyle</name><frequency>1</frequency></term>
+</list>
+<list name="subject">
+<term><name>Computer file</name><frequency>35</frequency></term>
+<term><name>Computers</name><frequency>30</frequency></term>
+<term><name>Computer networks</name><frequency>22</frequency></term>
+<term><name>Computer science</name><frequency>16</frequency></term>
+<term><name>Computer graphics</name><frequency>15</frequency></term>
+<term><name>Computer security</name><frequency>15</frequency></term>
+<term><name>Operating systems</name><frequency>14</frequency></term>
+<term><name>Computer program language</name><frequency>13</frequency></term>
+<term><name>Microsoft Windows</name><frequency>13</frequency></term>
+<term><name>Computer software</name><frequency>8</frequency></term>
+<term><name>Computer systems</name><frequency>8</frequency></term>
+<term><name>Computer architecture</name><frequency>7</frequency></term>
+<term><name>Computer programs</name><frequency>6</frequency></term>
+<term><name>Internet</name><frequency>6</frequency></term>
+<term><name>Computer animation</name><frequency>5</frequency></term>
+</list>
+<list name="date">
+<term><name>2000</name><frequency>53</frequency></term>
+<term><name>2001</name><frequency>23</frequency></term>
+<term><name>1999</name><frequency>17</frequency></term>
+<term><name>1998</name><frequency>5</frequency></term>
+<term><name>2002</name><frequency>2</frequency></term>
+<term><name>1997</name><frequency>1</frequency></term>
+</list>
+</termlist>
\ No newline at end of file
diff --git a/test/test_termlist_block_2.res b/test/test_termlist_block_2.res
new file mode 100644 (file)
index 0000000..42534e3
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<settings><status>OK</status></settings>
\ No newline at end of file
diff --git a/test/test_termlist_block_3.res b/test/test_termlist_block_3.res
new file mode 100644 (file)
index 0000000..ab63fe6
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<search><status>OK</status></search>
\ No newline at end of file
diff --git a/test/test_termlist_block_4.res b/test/test_termlist_block_4.res
new file mode 100644 (file)
index 0000000..5a1147b
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<show><status>OK</status>
+<activeclients>0</activeclients>
+<merged>0</merged>
+<total>0</total>
+<start>0</start>
+<num>0</num>
+</show>
\ No newline at end of file
diff --git a/test/test_termlist_block_5.res b/test/test_termlist_block_5.res
new file mode 100644 (file)
index 0000000..4118ca9
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bytarget><status>OK</status>
+<target><id>id_ocw</id>
+<name>MIT OpenCourseWare</name>
+<hits>0</hits>
+<diagnostic>114</diagnostic>
+<records>0</records>
+<state>Client_Error</state>
+</target></bytarget>
\ No newline at end of file
diff --git a/test/test_termlist_block_6.res b/test/test_termlist_block_6.res
new file mode 100644 (file)
index 0000000..653e6e0
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<termlist><activeclients>0</activeclients>
+<list name="xtargets">
+</list>
+<list name="author">
+</list>
+<list name="subject">
+</list>
+<list name="date">
+</list>
+</termlist>
\ No newline at end of file
diff --git a/test/test_termlist_block_7.res b/test/test_termlist_block_7.res
new file mode 100644 (file)
index 0000000..42534e3
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<settings><status>OK</status></settings>
\ No newline at end of file
diff --git a/test/test_termlist_block_8.res b/test/test_termlist_block_8.res
new file mode 100644 (file)
index 0000000..ab63fe6
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<search><status>OK</status></search>
\ No newline at end of file
diff --git a/test/test_termlist_block_9.res b/test/test_termlist_block_9.res
new file mode 100644 (file)
index 0000000..53e98fc
--- /dev/null
@@ -0,0 +1,273 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<show><status>OK</status>
+<activeclients>0</activeclients>
+<merged>100</merged>
+<total>1043</total>
+<start>0</start>
+<num>20</num>
+<hit>
+
+<md-title>Adobe Illustrator for the Mac</md-title>
+<md-title-remainder>fast &amp; easy</md-title-remainder>
+<md-date>2001</md-date>
+<md-author>Woodward, C. Michael</md-author><location id="id_solr" name="LOC (SOLR)">
+<md-title>Adobe Illustrator for the Mac</md-title>
+<md-title-remainder>fast &amp; easy</md-title-remainder>
+<md-date>2001</md-date>
+<md-author>Woodward, C. Michael</md-author></location>
+<relevance>600000</relevance>
+<recid>content: title adobe illustrator for the mac author woodward c michael</recid>
+</hit>
+<hit>
+
+<md-title>Advanced computer performance modeling and simulation</md-title>
+<md-date>1998</md-date><location id="id_solr" name="LOC (SOLR)">
+<md-title>Advanced computer performance modeling and simulation</md-title>
+<md-date>1998</md-date></location>
+<relevance>600000</relevance>
+<recid>content: title advanced computer performance modeling and simulation</recid>
+</hit>
+<hit>
+
+<md-title>Computer security</md-title>
+<md-title-remainder>FAA needs to improve controls over use of foreign nationals to remediate and review software : report to the Chairman, Committee on Science, House of Representatives</md-title-remainder>
+<md-date>1999</md-date>
+<md-description>&quot;GAO/AIMD-00-55.&quot;</md-description><location id="id_solr" name="LOC (SOLR)">
+<md-title>Computer security</md-title>
+<md-title-remainder>FAA needs to improve controls over use of foreign nationals to remediate and review software : report to the Chairman, Committee on Science, House of Representatives</md-title-remainder>
+<md-date>1999</md-date>
+<md-description>Cover title</md-description>
+<md-description>&quot;December 1999.&quot;</md-description>
+<md-description>&quot;GAO/AIMD-00-55.&quot;</md-description>
+<md-description>&quot;B-284308&quot;--P. 1</md-description></location>
+<relevance>600000</relevance>
+<recid>content: title computer security</recid>
+</hit>
+<hit>
+
+<md-title>Cyberterrorism and computer crimes</md-title>
+<md-title-remainder>issues surrounding the establishment of an international regime</md-title-remainder>
+<md-date>2000</md-date>
+<md-author>Aldrich, Richard W</md-author>
+<md-description>&quot;April 2000.&quot;</md-description><location id="id_solr" name="LOC (SOLR)">
+<md-title>Cyberterrorism and computer crimes</md-title>
+<md-title-remainder>issues surrounding the establishment of an international regime</md-title-remainder>
+<md-date>2000</md-date>
+<md-author>Aldrich, Richard W</md-author>
+<md-description>&quot;April 2000.&quot;</md-description></location>
+<relevance>600000</relevance>
+<recid>content: title cyberterrorism and computer crimes author aldrich richard w</recid>
+</hit>
+<hit>
+
+<md-title>Software design and usability</md-title>
+<md-title-remainder>talks with Bonnie Nardi, Jakob Nielsen, David Smith, Austin Henderson &amp; Jed Harris, Terry Winograd, Stephanie Rosenbaum</md-title-remainder>
+<md-date>2000</md-date>
+<md-author>Kaasgaard, Klaus</md-author><location id="id_solr" name="LOC (SOLR)">
+<md-title>Software design and usability</md-title>
+<md-title-remainder>talks with Bonnie Nardi, Jakob Nielsen, David Smith, Austin Henderson &amp; Jed Harris, Terry Winograd, Stephanie Rosenbaum</md-title-remainder>
+<md-date>2000</md-date>
+<md-author>Kaasgaard, Klaus</md-author></location>
+<relevance>550000</relevance>
+<recid>content: title software design and usability author kaasgaard klaus</recid>
+</hit>
+<hit>
+
+<md-title>Everything you need to know about the dangers of computer hacking</md-title>
+<md-date>2000</md-date>
+<md-author>Knittel, John</md-author>
+<md-description>Explains what computer hacking is, who does it, and how dangerous it can be</md-description><location id="id_solr" name="LOC (SOLR)">
+<md-title>Everything you need to know about the dangers of computer hacking</md-title>
+<md-date>2000</md-date>
+<md-author>Knittel, John</md-author>
+<md-description>Explains what computer hacking is, who does it, and how dangerous it can be</md-description></location>
+<relevance>525974</relevance>
+<recid>content: title everything you need to know about the dangers of computer hacking author knittel john</recid>
+</hit>
+<hit>
+
+<md-title>Computer and Internet liability</md-title>
+<md-title-remainder>strategies, claims, and defenses</md-title-remainder>
+<md-date>2000</md-date>
+<md-author>Williams, Richard D</md-author>
+<md-description>Rev. ed. of: Law of the year 2000 problem. c1999-</md-description><location id="id_solr" name="LOC (SOLR)">
+<md-title>Computer and Internet liability</md-title>
+<md-title-remainder>strategies, claims, and defenses</md-title-remainder>
+<md-date>2000</md-date>
+<md-author>Williams, Richard D</md-author>
+<md-description>Rev. ed. of: Law of the year 2000 problem. c1999-</md-description>
+<md-description>Includes index</md-description></location>
+<relevance>450000</relevance>
+<recid>content: title computer and internet liability author williams richard d</recid>
+</hit>
+<hit>
+
+<md-title>CorelDRAW 8 for Windows</md-title>
+<md-date>1998</md-date>
+<md-author>Davis, Phyllis</md-author>
+<md-description>Includes index</md-description><location id="id_solr" name="LOC (SOLR)">
+<md-title>CorelDRAW 8 for Windows</md-title>
+<md-date>1998</md-date>
+<md-author>Davis, Phyllis</md-author>
+<md-description>Includes index</md-description></location>
+<relevance>450000</relevance>
+<recid>content: title coreldraw for windows author davis phyllis</recid>
+</hit>
+<hit>
+
+<md-title>Inside 3ds max 4</md-title>
+<md-date>2002</md-date>
+<md-description>The accompanying CD-ROM contains all the files needed to complete the exercises contained in the book and links to third-party programs</md-description><location id="id_solr" name="LOC (SOLR)">
+<md-title>Inside 3ds max 4</md-title>
+<md-date>2002</md-date>
+<md-description>Includes index</md-description>
+<md-description>The accompanying CD-ROM contains all the files needed to complete the exercises contained in the book and links to third-party programs</md-description></location>
+<relevance>450000</relevance>
+<recid>content: title inside ds max</recid>
+</hit>
+<hit>
+
+<md-title>Quicken 2000 for the Mac</md-title>
+<md-title-remainder>the official guide</md-title-remainder>
+<md-date>2000</md-date>
+<md-author>Langer, Maria</md-author>
+<md-description>&quot;Covers Quicken deluxe 2000 for the Mac&quot;--Cover</md-description><location id="id_solr" name="LOC (SOLR)">
+<md-title>Quicken 2000 for the Mac</md-title>
+<md-title-remainder>the official guide</md-title-remainder>
+<md-date>2000</md-date>
+<md-author>Langer, Maria</md-author>
+<md-description>Includes index</md-description>
+<md-description>&quot;Covers Quicken deluxe 2000 for the Mac&quot;--Cover</md-description></location>
+<relevance>450000</relevance>
+<recid>content: title quicken for the mac author langer maria</recid>
+</hit>
+<hit>
+
+<md-title>Sicherheit und Schutz im Netz</md-title>
+<md-date>1998</md-date><location id="id_solr" name="LOC (SOLR)">
+<md-title>Sicherheit und Schutz im Netz</md-title>
+<md-date>1998</md-date></location>
+<relevance>450000</relevance>
+<recid>content: title sicherheit und schutz im netz</recid>
+</hit>
+<hit>
+
+<md-title>Unix Secure Shell</md-title>
+<md-date>1999</md-date>
+<md-author>Carasik, Anne H</md-author>
+<md-description>Includes index</md-description><location id="id_solr" name="LOC (SOLR)">
+<md-title>Unix Secure Shell</md-title>
+<md-date>1999</md-date>
+<md-author>Carasik, Anne H</md-author>
+<md-description>Includes index</md-description></location>
+<relevance>450000</relevance>
+<recid>content: title unix secure shell author carasik anne h</recid>
+</hit>
+<hit>
+
+<md-title>www.StopThief.net</md-title>
+<md-title-remainder>protecting your identity on the Web</md-title-remainder>
+<md-date>1999</md-date>
+<md-author>Marcella, Albert J</md-author><location id="id_solr" name="LOC (SOLR)">
+<md-title>www.StopThief.net</md-title>
+<md-title-remainder>protecting your identity on the Web</md-title-remainder>
+<md-date>1999</md-date>
+<md-author>Marcella, Albert J</md-author></location>
+<relevance>450000</relevance>
+<recid>content: title www stopthief net author marcella albert j</recid>
+</hit>
+<hit>
+
+<md-title>Eight International Conference on Computer Communications and Networks</md-title>
+<md-title-remainder>proceedings, 11-13 October 1999, Boston, Massachusetts</md-title-remainder>
+<md-date>1999</md-date>
+<md-description>&quot;IEEE catalog number 99EX370&quot;--T.p. verso</md-description><location id="id_solr" name="LOC (SOLR)">
+<md-title>Eight International Conference on Computer Communications and Networks</md-title>
+<md-title-remainder>proceedings, 11-13 October 1999, Boston, Massachusetts</md-title-remainder>
+<md-date>1999</md-date>
+<md-description>&quot;IEEE catalog number 99EX370&quot;--T.p. verso</md-description></location>
+<relevance>425000</relevance>
+<recid>content: title eight international conference on computer communications and networks</recid>
+</hit>
+<hit>
+
+<md-title>Building storage networks</md-title>
+<md-date>2000</md-date>
+<md-author>Farley, Marc</md-author>
+<md-description>Includes index</md-description><location id="id_solr" name="LOC (SOLR)">
+<md-title>Building storage networks</md-title>
+<md-date>2000</md-date>
+<md-author>Farley, Marc</md-author>
+<md-description>Includes index</md-description></location>
+<relevance>400000</relevance>
+<recid>content: title building storage networks author farley marc</recid>
+</hit>
+<hit>
+
+<md-title>3D games</md-title>
+<md-title-remainder>real-time rendering and software technology</md-title-remainder>
+<md-date>2001</md-date>
+<md-author>Watt, Alan H</md-author><location id="id_solr" name="LOC (SOLR)">
+<md-title>3D games</md-title>
+<md-title-remainder>real-time rendering and software technology</md-title-remainder>
+<md-date>2001</md-date>
+<md-author>Watt, Alan H</md-author></location>
+<relevance>400000</relevance>
+<recid>content: title d games author watt alan h</recid>
+</hit>
+<hit>
+
+<md-title>Mastering algorithms with C</md-title>
+<md-date>1999</md-date>
+<md-author>Loudon, Kyle</md-author>
+<md-description>&quot;Useful techniques from sorting to encryption&quot;--Cover</md-description><location id="id_solr" name="LOC (SOLR)">
+<md-title>Mastering algorithms with C</md-title>
+<md-date>1999</md-date>
+<md-author>Loudon, Kyle</md-author>
+<md-description>&quot;Useful techniques from sorting to encryption&quot;--Cover</md-description>
+<md-description>Includes index</md-description></location>
+<relevance>400000</relevance>
+<recid>content: title mastering algorithms with c author loudon kyle</recid>
+</hit>
+<hit>
+
+<md-title>Oracle8i Java component programming with EJB, CORBA, and JSP</md-title>
+<md-date>2000</md-date>
+<md-author>Morisseau-Leroy, Nirva</md-author>
+<md-description>CD-ROM includes resources mentioned in the book, electronic versions of the appendices, plus sample JSP &amp; servlet programs</md-description><location id="id_solr" name="LOC (SOLR)">
+<md-title>Oracle8i Java component programming with EJB, CORBA, and JSP</md-title>
+<md-date>2000</md-date>
+<md-author>Morisseau-Leroy, Nirva</md-author>
+<md-description>&quot;Covers Oracle database releases 8.1.5, 8.1.6, and 8.1.7.&quot;</md-description>
+<md-description>CD-ROM includes resources mentioned in the book, electronic versions of the appendices, plus sample JSP &amp; servlet programs</md-description></location>
+<relevance>400000</relevance>
+<recid>content: title oracle i java component programming with ejb corba and jsp author morisseau leroy nirva</recid>
+</hit>
+<hit>
+
+<md-title>Oracle SQL*Plus</md-title>
+<md-title-remainder>pocket reference</md-title-remainder>
+<md-date>2000</md-date>
+<md-author>Gennick, Jonathan</md-author>
+<md-description>&quot;Guide to SQL*Plus syntax&quot;--cover</md-description><location id="id_solr" name="LOC (SOLR)">
+<md-title>Oracle SQL*Plus</md-title>
+<md-title-remainder>pocket reference</md-title-remainder>
+<md-date>2000</md-date>
+<md-author>Gennick, Jonathan</md-author>
+<md-description>&quot;Covers Oracle8i&quot;--cover</md-description>
+<md-description>&quot;Guide to SQL*Plus syntax&quot;--cover</md-description></location>
+<relevance>400000</relevance>
+<recid>content: title oracle sql plus author gennick jonathan</recid>
+</hit>
+<hit>
+
+<md-title>Programming Web graphics with PERL and GNU software</md-title>
+<md-date>1999</md-date>
+<md-author>Wallace, Shawn P</md-author><location id="id_solr" name="LOC (SOLR)">
+<md-title>Programming Web graphics with PERL and GNU software</md-title>
+<md-date>1999</md-date>
+<md-author>Wallace, Shawn P</md-author></location>
+<relevance>400000</relevance>
+<recid>content: title programming web graphics with perl and gnu software author wallace shawn p</recid>
+</hit>
+</show>
\ No newline at end of file