Merge branch 'master' of ssh://git.indexdata.com/home/git/pub/pazpar2
authorAdam Dickmeiss <adam@indexdata.dk>
Mon, 14 Nov 2011 09:36:44 +0000 (10:36 +0100)
committerAdam Dickmeiss <adam@indexdata.dk>
Mon, 14 Nov 2011 09:36:44 +0000 (10:36 +0100)
37 files changed:
NEWS
doc/pazpar2_conf.xml
src/client.c
src/client.h
src/facet_limit.c
src/facet_limit.h
src/session.c
src/session.h
test/marc21_test.xsl
test/test_http.cfg
test/test_http.urls
test/test_http_10.res
test/test_http_11.res
test/test_http_36.res
test/test_http_42.res
test/test_http_45.res
test/test_http_49.res
test/test_http_5.res
test/test_http_50.res
test/test_http_60.res
test/test_http_63.res
test/test_http_64.res [new file with mode: 0644]
test/test_http_65.res [new file with mode: 0644]
test/test_http_66.res [new file with mode: 0644]
test/test_http_67.res [new file with mode: 0644]
test/test_http_68.res [new file with mode: 0644]
test/test_http_69.res [new file with mode: 0644]
test/test_http_70.res [new file with mode: 0644]
test/test_http_71.res [new file with mode: 0644]
test/test_http_72.res [new file with mode: 0644]
test/test_http_73.res [new file with mode: 0644]
test/test_http_74.res [new file with mode: 0644]
test/test_http_75.res [new file with mode: 0644]
test/test_http_76.res [new file with mode: 0644]
test/test_http_8.res
test/test_http_9.res
test/test_icu_8.res

diff --git a/NEWS b/NEWS
index d818d3f..d5376e7 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,12 @@
+For search, when limit and or filtering is in place and search
+is identical to previous search, the result set is re-used and the
+target is not searched.
+
+Limits may work perform local filtering as well, by using "local:"
+for a limitmap.
+
 --- 1.6.5 2011/11/01
+
 Updated bytarget command to contain a suggestions element with misspelled
 words and suggestions to these. pz2.js has been updated to deliver this 
 onwards as well. Only target that currently delivers this is the solr 
index dcc1fdf..f41070c 100644 (file)
      <listitem>
       <para>
        Specifies attributes for limiting a search to a field - using
-       the limit parameter for search. In some cases the mapping of 
+       the limit parameter for search. It can be used to filter locally
+       or remotely (search in a target). In some cases the mapping of 
        a field to a value is identical to an existing cclmap field; in
        other cases the field must be specified in a different way - for
        example to match a complete field (rather than parts of a subfield).
       </para>
       <para>
-       The value of limitmap may have one of two forms: referral to
-       an exisiting CCL field or a raw PQF string. Leading string
-       determines type; either <literal>ccl:</literal> for CCL field or
-       <literal>rpn:</literal> for PQF/RPN.
+       The value of limitmap may have one of three forms: referral to
+       an existing CCL field, a raw PQF string or a local limit. Leading string
+       determines type; either <literal>ccl:</literal> for CCL field, 
+       <literal>rpn:</literal> for PQF/RPN, or <literal>local:</literal>
+       for filtering in Pazpar2.
       </para>
       <note>
        <para>
        The limitmap facility is supported for Pazpar2 version 1.6.0.
+       Local filtering is supported in Pazpar2 1.6.6.
        </para>
       </note>
      </listitem>
index 510cf68..5100f80 100644 (file)
@@ -121,6 +121,7 @@ struct client {
     YAZ_MUTEX mutex;
     int ref_count;
     char *id;
+    facet_limits_t facet_limits;
 };
 
 struct suggestions {
@@ -554,12 +555,61 @@ void client_got_records(struct client *cl)
     struct session *se = cl->session;
     if (se)
     {
-        client_unlock(cl);
-        session_alert_watch(se, SESSION_WATCH_SHOW);
-        session_alert_watch(se, SESSION_WATCH_BYTARGET);
-        session_alert_watch(se, SESSION_WATCH_TERMLIST);
-        session_alert_watch(se, SESSION_WATCH_RECORD);
-        client_lock(cl);
+        if (reclist_get_num_records(se->reclist) > 0)
+        {
+            client_unlock(cl);
+            session_alert_watch(se, SESSION_WATCH_SHOW);
+            session_alert_watch(se, SESSION_WATCH_BYTARGET);
+            session_alert_watch(se, SESSION_WATCH_TERMLIST);
+            session_alert_watch(se, SESSION_WATCH_RECORD);
+            client_lock(cl);
+        }
+    }
+}
+
+static void client_record_ingest(struct client *cl)
+{
+    const char *msg, *addinfo;
+    ZOOM_record rec = 0;
+    ZOOM_resultset resultset = cl->resultset;
+    int offset = cl->record_offset;
+    if ((rec = ZOOM_resultset_record(resultset, offset)))
+    {
+        cl->record_offset++;
+        if (cl->session == 0)
+            ;
+        else if (ZOOM_record_error(rec, &msg, &addinfo, 0))
+        {
+            yaz_log(YLOG_WARN, "Record error %s (%s): %s (rec #%d)",
+                    msg, addinfo, client_get_id(cl),
+                    cl->record_offset);
+        }
+        else
+        {
+            struct session_database *sdb = client_get_database(cl);
+            NMEM nmem = nmem_create();
+            const char *xmlrec;
+            char type[80];
+            
+            if (nativesyntax_to_type(sdb, type, rec))
+                yaz_log(YLOG_WARN, "Failed to determine record type");
+            xmlrec = ZOOM_record_get(rec, type, NULL);
+            if (!xmlrec)
+                yaz_log(YLOG_WARN, "ZOOM_record_get failed from %s",
+                        client_get_id(cl));
+            else
+            {
+                /* OK = 0, -1 = failure, -2 = Filtered */
+                if (ingest_record(cl, xmlrec, cl->record_offset, nmem) == -1)
+                    yaz_log(YLOG_WARN, "Failed to ingest from %s", client_get_id(cl));
+            }
+            nmem_destroy(nmem);
+        }
+    }
+    else
+    {
+        yaz_log(YLOG_WARN, "Expected record, but got NULL, offset=%d",
+                offset);
     }
 }
 
@@ -578,11 +628,9 @@ void client_record_response(struct client *cl)
     }
     else
     {
-        ZOOM_record rec = 0;
-        const char *msg, *addinfo;
-        
         if (cl->show_raw && cl->show_raw->active)
         {
+            ZOOM_record rec = 0;
             if ((rec = ZOOM_resultset_record(resultset,
                                              cl->show_raw->position-1)))
             {
@@ -597,49 +645,21 @@ void client_record_response(struct client *cl)
         }
         else
         {
-            int offset = cl->record_offset;
-            if ((rec = ZOOM_resultset_record(resultset, offset)))
-            {
-                cl->record_offset++;
-                if (cl->session == 0)
-                    ;
-                else if (ZOOM_record_error(rec, &msg, &addinfo, 0))
-                {
-                    yaz_log(YLOG_WARN, "Record error %s (%s): %s (rec #%d)",
-                            msg, addinfo, client_get_id(cl),
-                            cl->record_offset);
-                }
-                else
-                {
-                    struct session_database *sdb = client_get_database(cl);
-                    NMEM nmem = nmem_create();
-                    const char *xmlrec;
-                    char type[80];
-
-                    if (nativesyntax_to_type(sdb, type, rec))
-                        yaz_log(YLOG_WARN, "Failed to determine record type");
-                    xmlrec = ZOOM_record_get(rec, type, NULL);
-                    if (!xmlrec)
-                        yaz_log(YLOG_WARN, "ZOOM_record_get failed from %s",
-                                client_get_id(cl));
-                    else
-                    {
-                        /* OK = 0, -1 = failure, -2 = Filtered */
-                        if (ingest_record(cl, xmlrec, cl->record_offset, nmem) == -1)
-                            yaz_log(YLOG_WARN, "Failed to ingest from %s", client_get_id(cl));
-                    }
-                    nmem_destroy(nmem);
-                }
-            }
-            else
-            {
-                yaz_log(YLOG_WARN, "Expected record, but got NULL, offset=%d",
-                        offset);
-            }
+            client_record_ingest(cl);
         }
     }
 }
 
+void client_reingest(struct client *cl)
+{
+    int i = cl->startrecs;
+    int to = cl->record_offset;
+
+    cl->record_offset = i;
+    for (; i < to; i++)
+        client_record_ingest(cl);
+}
+
 static void client_set_facets_request(struct client *cl, ZOOM_connection link)
 {
     struct session_database *sdb = client_get_database(cl);
@@ -729,7 +749,6 @@ void client_start_search(struct client *cl)
 
     assert(link);
 
-    cl->record_offset = 0;
     cl->diagnostic = 0;
 
     if (extra_args && *extra_args)
@@ -827,6 +846,8 @@ void client_start_search(struct client *cl)
             }
         }
     }
+    cl->hits = 0;
+    cl->record_offset = 0;
     rs = ZOOM_connection_search(link, q);
     ZOOM_query_destroy(q);
     ZOOM_resultset_destroy(cl->resultset);
@@ -855,6 +876,7 @@ struct client *client_create(const char *id)
     pazpar2_mutex_create(&cl->mutex, "client");
     cl->preferred = 0;
     cl->ref_count = 1;
+    cl->facet_limits = 0;
     assert(id);
     cl->id = xstrdup(id);
     client_use(1);
@@ -893,6 +915,7 @@ int client_destroy(struct client *c)
             c->cqlquery = 0;
             xfree(c->id);
             assert(!c->connection);
+            facet_limits_destroy(c->facet_limits);
 
             if (c->resultset)
             {
@@ -1016,10 +1039,38 @@ static char *make_solrquery(struct client *cl)
     return r;
 }
 
-static void apply_limit(struct session_database *sdb,
-                        facet_limits_t facet_limits,
-                        WRBUF w_pqf, WRBUF w_ccl)
+const char *client_get_facet_limit_local(struct client *cl,
+                                         struct session_database *sdb,
+                                         int *l,
+                                         NMEM nmem, int *num, char ***values)
+{
+    const char *name = 0;
+    const char *value = 0;
+    for (; (name = facet_limits_get(cl->facet_limits, *l, &value)); (*l)++)
+    {
+        struct setting *s = 0;
+        
+        for (s = sdb->settings[PZ_LIMITMAP]; s; s = s->next)
+        {
+            const char *p = strchr(s->name + 3, ':');
+            if (p && !strcmp(p + 1, name) && s->value &&
+                !strncmp(s->value, "local:", 6))
+            {
+                nmem_strsplit_escape2(nmem, "|", value, values,
+                                      num, 1, '\\', 1);
+                (*l)++;
+                return name;
+            }
+        }
+    }
+    return 0;
+}
+
+static int apply_limit(struct session_database *sdb,
+                       facet_limits_t facet_limits,
+                       WRBUF w_pqf, WRBUF w_ccl)
 {
+    int ret = 0;
     int i = 0;
     const char *name;
     const char *value;
@@ -1071,6 +1122,14 @@ static void apply_limit(struct session_database *sdb,
                     wrbuf_puts(w_ccl, ")");
 
                 }
+                else if (!strncmp(s->value, "local:", 6))
+                    ;
+                else
+                {
+                    yaz_log(YLOG_WARN, "Target %s: Bad limitmap '%s'",
+                            sdb->database->id, s->value);
+                    ret = -1; /* bad limitmap */
+                }
                 break;
             }
         }
@@ -1082,11 +1141,13 @@ static void apply_limit(struct session_database *sdb,
         }
     }
     nmem_destroy(nmem_tmp);
+    return ret;
 }
                         
 // Parse the query given the settings specific to this client
 int client_parse_query(struct client *cl, const char *query,
-                       facet_limits_t facet_limits)
+                       facet_limits_t facet_limits,
+                       const char *startrecs, const char *maxrecs)
 {
     struct session *se = client_get_session(cl);
     struct session_database *sdb = client_get_database(cl);
@@ -1098,10 +1159,24 @@ int client_parse_query(struct client *cl, const char *query,
     const char *pqf_strftime = session_setting_oneval(sdb, PZ_PQF_STRFTIME);
     const char *query_syntax = session_setting_oneval(sdb, PZ_QUERY_SYNTAX);
     WRBUF w_ccl, w_pqf;
+    int ret_value = 1;
+
     if (!ccl_map)
         return -1;
 
-    cl->hits = -1;
+
+    if (maxrecs && atoi(maxrecs) != cl->maxrecs)
+    {
+        ret_value = 0;
+        cl->maxrecs = atoi(maxrecs);
+    }
+
+    if (startrecs && atoi(startrecs) != cl->startrecs)
+    {
+        ret_value = 0;
+        cl->startrecs = atoi(startrecs);
+    }
+
     w_ccl = wrbuf_alloc();
     wrbuf_puts(w_ccl, query);
 
@@ -1112,7 +1187,11 @@ int client_parse_query(struct client *cl, const char *query,
         wrbuf_puts(w_pqf, " ");
     }
 
-    apply_limit(sdb, facet_limits, w_pqf, w_ccl);
+    if (apply_limit(sdb, facet_limits, w_pqf, w_ccl))
+        return -2;
+
+    facet_limits_destroy(cl->facet_limits);
+    cl->facet_limits = facet_limits_dup(facet_limits);
 
     yaz_log(YLOG_LOG, "CCL query: %s", wrbuf_cstr(w_ccl));
     cn = ccl_find_str(ccl_map, wrbuf_cstr(w_ccl), &cerror, &cpos);
@@ -1149,8 +1228,12 @@ int client_parse_query(struct client *cl, const char *query,
                 wrbuf_putc(w_pqf, cp[0]);
         }
     }
-    xfree(cl->pquery);
-    cl->pquery = xstrdup(wrbuf_cstr(w_pqf));
+    if (!cl->pquery || strcmp(cl->pquery, wrbuf_cstr(w_pqf)))
+    {
+        xfree(cl->pquery);
+        cl->pquery = xstrdup(wrbuf_cstr(w_pqf));
+        ret_value = 0;
+    }
     wrbuf_destroy(w_pqf);
 
     yaz_log(YLOG_LOG, "PQF query: %s", cl->pquery);
@@ -1183,7 +1266,7 @@ int client_parse_query(struct client *cl, const char *query,
     }
 
     ccl_rpn_delete(cn);
-    return 0;
+    return ret_value;
 }
 
 void client_set_session(struct client *cl, struct session *se)
@@ -1272,21 +1355,11 @@ const char *client_get_id(struct client *cl)
     return cl->id;
 }
 
-void client_set_maxrecs(struct client *cl, int v)
-{
-    cl->maxrecs = v;
-}
-
 int client_get_maxrecs(struct client *cl)
 {
     return cl->maxrecs;
 }
 
-void client_set_startrecs(struct client *cl, int v)
-{
-    cl->startrecs = v;
-}
-
 void client_set_preferred(struct client *cl, int v)
 {
     cl->preferred = v;
index 29eeb7e..275b294 100644 (file)
@@ -84,16 +84,15 @@ int client_is_active_preferred(struct client *cl);
 struct client *client_next_in_session(struct client *cl);
 
 int client_parse_query(struct client *cl, const char *query,
-                       facet_limits_t facet_limits);
+                       facet_limits_t facet_limits, const char *startrecs,
+                       const char *maxrecs);
 Odr_int client_get_hits(struct client *cl);
 int client_get_num_records(struct client *cl);
 int client_get_diagnostic(struct client *cl);
 void client_set_diagnostic(struct client *cl, int diagnostic);
 void client_set_database(struct client *cl, struct session_database *db);
 const char *client_get_id(struct client *cl);
-void client_set_maxrecs(struct client *cl, int v);
 int  client_get_maxrecs(struct client *cl);
-void client_set_startrecs(struct client *cl, int v);
 void client_remove_from_session(struct client *c);
 void client_incref(struct client *c);
 void client_got_records(struct client *c);
@@ -102,7 +101,11 @@ void client_unlock(struct client *c);
 
 int client_has_facet(struct client *cl, const char *name);
 void client_check_preferred_watch(struct client *cl);
-
+void client_reingest(struct client *cl);
+const char *client_get_facet_limit_local(struct client *cl,
+                                         struct session_database *sdb,
+                                         int *l,
+                                         NMEM nmem, int *num, char ***values);
 #endif
 
 /*
index 44bcff0..92d7eaf 100644 (file)
@@ -39,6 +39,28 @@ struct facet_limits {
     char **darray;
 };
 
+facet_limits_t facet_limits_dup(facet_limits_t fl)
+{
+    int i;
+    NMEM nmem = nmem_create();
+    facet_limits_t fn = nmem_malloc(nmem, sizeof(*fn));
+    fn->nmem = nmem;
+    fn->num = fl->num;
+    fn->darray = 0;
+    if (fl->num)
+    {
+        fn->darray = nmem_malloc(nmem, fn->num * sizeof(*fn->darray));
+        for (i = 0; i < fn->num; i++)
+        {
+            const char *src = fl->darray[i];
+            size_t sz = strlen(src) + 2 + strlen(src + strlen(src) + 1);
+            fn->darray[i] = nmem_malloc(nmem, sz);
+            memcpy(fn->darray[i], src, sz);
+        }
+    }
+    return fn;
+}
+
 facet_limits_t facet_limits_create(const char *param)
 {
     int i;
index 60b8e9a..60ce8ce 100644 (file)
@@ -32,6 +32,8 @@ const char *facet_limits_get(facet_limits_t fl, int idx, const char **value);
 
 void facet_limits_destroy(facet_limits_t fl);
 
+facet_limits_t facet_limits_dup(facet_limits_t fl);
+
 #endif
 
 /*
index f2d7e2d..cdd588c 100644 (file)
@@ -159,13 +159,14 @@ static void session_leave(struct session *s)
     yaz_mutex_leave(s->session_mutex);
 }
 
-void add_facet(struct session *s, const char *type, const char *value, int count)
+static void session_normalize_facet(struct session *s, const char *type,
+                                    const char *value,
+                                    WRBUF display_wrbuf,
+                                    WRBUF facet_wrbuf)
 {
     struct conf_service *service = s->service;
     pp2_charset_token_t prt;
     const char *facet_component;
-    WRBUF facet_wrbuf = wrbuf_alloc();
-    WRBUF display_wrbuf = wrbuf_alloc();
     int i;
     const char *icu_chain_id = 0;
 
@@ -202,6 +203,14 @@ void add_facet(struct session *s, const char *type, const char *value, int count
         }
     }
     pp2_charset_token_destroy(prt);
+}
+
+void add_facet(struct session *s, const char *type, const char *value, int count)
+{
+    WRBUF facet_wrbuf = wrbuf_alloc();
+    WRBUF display_wrbuf = wrbuf_alloc();
+
+    session_normalize_facet(s, type, value, display_wrbuf, facet_wrbuf);
  
     if (wrbuf_len(facet_wrbuf))
     {
@@ -399,12 +408,8 @@ static int prepare_map(struct session *se, struct session_database *sdb)
 {
     const char *s;
 
-    if (!sdb->settings)
-    {
-        session_log(se, YLOG_WARN, "No settings on %s", sdb->database->id);
-        return -1;
-    }
-    if ((s = session_setting_oneval(sdb, PZ_XSLT)))
+    if (sdb->settings && sdb->settings[PZ_XSLT] && !sdb->map &&
+        (s = session_setting_oneval(sdb, PZ_XSLT)))        
     {
         char auto_stylesheet[256];
 
@@ -439,25 +444,6 @@ static int prepare_map(struct session *se, struct session_database *sdb)
     return 0;
 }
 
-// This analyzes settings and recomputes any supporting data structures
-// if necessary.
-static int prepare_session_database(struct session *se, 
-                                    struct session_database *sdb)
-{
-    if (!sdb->settings)
-    {
-        session_log(se, YLOG_WARN, 
-                "No settings associated with %s", sdb->database->id);
-        return -1;
-    }
-    if (sdb->settings[PZ_XSLT] && !sdb->map)
-    {
-        if (prepare_map(se, sdb) < 0)
-            return -1;
-    }
-    return 0;
-}
-
 // called if watch should be removed because http_channel is to be destroyed
 static void session_watch_cancel(void *data, struct http_channel *c,
                                  void *data2)
@@ -524,26 +510,60 @@ void session_alert_watch(struct session *s, int what)
 static void select_targets_callback(struct session *se,
                                     struct session_database *db)
 {
-    struct client *cl = client_create(db->database->id);
+    struct client *cl;
     struct client_list *l;
 
-    client_set_database(cl, db);
+    for (l = se->clients_cached; l; l = l->next)
+        if (client_get_database(l->client) == db)
+            break;
 
-    client_set_session(cl, se);
+    if (l)
+        cl = l->client;
+    else
+    {
+        cl = client_create(db->database->id);
+        client_set_database(cl, db);
+        client_set_session(cl, se);
+
+        l = xmalloc(sizeof(*l));
+        l->client = cl;
+        l->next = se->clients_cached;
+        se->clients_cached = l;
+    }
 
     l = xmalloc(sizeof(*l));
     l->client = cl;
-    l->next = se->clients;
-    se->clients = l;
+    l->next = se->clients_active;
+    se->clients_active = l;
 }
 
-static void session_remove_clients(struct session *se)
+static void session_reset_active_clients(struct session *se,
+                                         struct client_list *new_list)
 {
     struct client_list *l;
 
     session_enter(se);
-    l = se->clients;
-    se->clients = 0;
+    l = se->clients_active;
+    se->clients_active = new_list;
+    session_leave(se);
+
+    while (l)
+    {
+        struct client_list *l_next = l->next;
+        xfree(l);
+        l = l_next;
+    }
+}
+
+static void session_remove_cached_clients(struct session *se)
+{
+    struct client_list *l;
+
+    session_reset_active_clients(se, 0);
+
+    session_enter(se);
+    l = se->clients_cached;
+    se->clients_cached = 0;
     session_leave(se);
 
     while (l)
@@ -572,7 +592,7 @@ int session_active_clients(struct session *s)
     struct client_list *l;
     int res = 0;
 
-    for (l = s->clients; l; l = l->next)
+    for (l = s->clients_active; l; l = l->next)
         if (client_is_active(l->client))
             res++;
 
@@ -584,7 +604,7 @@ int session_is_preferred_clients_ready(struct session *s)
     struct client_list *l;
     int res = 0;
 
-    for (l = s->clients; l; l = l->next)
+    for (l = s->clients_active; l; l = l->next)
         if (client_is_active_preferred(l->client))
             res++;
     session_log(s, YLOG_DEBUG, "Has %d active preferred clients.", res);
@@ -619,7 +639,7 @@ void session_sort(struct session *se, const char *field, int increasing)
     sr->next = se->sorted_results;
     se->sorted_results = sr;
     
-    for (l = se->clients; l; l = l->next)
+    for (l = se->clients_active; l; l = l->next)
     {
         struct client *cl = l->client;
         struct timeval tval;
@@ -643,8 +663,9 @@ enum pazpar2_error_code session_search(struct session *se,
 {
     int live_channels = 0;
     int no_working = 0;
-    int no_failed = 0;
-    struct client_list *l;
+    int no_failed_query = 0;
+    int no_failed_limit = 0;
+    struct client_list *l, *l0;
     struct timeval tval;
     facet_limits_t facet_limits;
 
@@ -652,11 +673,15 @@ enum pazpar2_error_code session_search(struct session *se,
 
     *addinfo = 0;
 
-    session_remove_clients(se);
+    if (se->settings_modified)
+        session_remove_cached_clients(se);
+    else
+        session_reset_active_clients(se, 0);
     
     session_enter(se);
     reclist_destroy(se->reclist);
     se->reclist = 0;
+    se->settings_modified = 0;
     relevance_destroy(&se->relevance);
     nmem_reset(se->nmem);
     se->total_records = se->total_merged = 0;
@@ -687,20 +712,28 @@ enum pazpar2_error_code session_search(struct session *se,
         session_leave(se);
         return PAZPAR2_MALFORMED_PARAMETER_VALUE;
     }
-    for (l = se->clients; l; l = l->next)
+
+    l0 = se->clients_active;
+    se->clients_active = 0;
+    session_leave(se);
+
+    for (l = l0; l; l = l->next)
     {
+        int parse_ret;
         struct client *cl = l->client;
 
-        if (maxrecs)
-            client_set_maxrecs(cl, atoi(maxrecs));
-        if (startrecs)
-            client_set_startrecs(cl, atoi(startrecs));
-        if (prepare_session_database(se, client_get_database(cl)) < 0)
-            ;
-        else if (client_parse_query(cl, query, facet_limits) < 0)
-            no_failed++;
-        else
+        if (prepare_map(se, client_get_database(cl)) < 0)
+            continue;
+
+        parse_ret = client_parse_query(cl, query, facet_limits, startrecs,
+            maxrecs);
+        if (parse_ret == -1)
+            no_failed_query++;
+        else if (parse_ret == -2)
+            no_failed_limit++;
+        else if (parse_ret == 0)
         {
+            session_log(se, YLOG_LOG, "client NEW %s", client_get_id(cl));
             no_working++;
             if (client_prep_connection(cl, se->service->z3950_operation_timeout,
                                        se->service->z3950_session_timeout,
@@ -708,19 +741,38 @@ enum pazpar2_error_code session_search(struct session *se,
                                        &tval))
                 client_start_search(cl);
         }
+        else
+        {
+            session_log(se, YLOG_LOG, "client REUSE %s", client_get_id(cl));
+            no_working++;
+            if (client_prep_connection(cl, se->service->z3950_operation_timeout,
+                                       se->service->z3950_session_timeout,
+                                       se->service->server->iochan_man,
+                                       &tval))
+            {
+                client_reingest(cl);
+            }
+        }
     }
     facet_limits_destroy(facet_limits);
-    session_leave(se);
+    session_reset_active_clients(se, l0);
+
     if (no_working == 0)
     {
-        if (no_failed > 0)
+        if (no_failed_query > 0)
         {
             *addinfo = "query";
             return PAZPAR2_MALFORMED_PARAMETER_VALUE;
         }
+        else if (no_failed_limit > 0)
+        {
+            *addinfo = "limit";
+            return PAZPAR2_MALFORMED_PARAMETER_VALUE;
+        }
         else
             return PAZPAR2_NO_TARGETS;
     }
+    yaz_log(YLOG_LOG, "session_start_search done");
     return PAZPAR2_NO_ERROR;
 }
 
@@ -804,6 +856,8 @@ void session_apply_setting(struct session *se, char *dbname, char *setting,
     new->next = sdb->settings[offset];
     sdb->settings[offset] = new;
 
+    se->settings_modified = 1;
+
     // Force later recompute of settings-driven data structures
     // (happens when a search starts and client connections are prepared)
     switch (offset)
@@ -817,11 +871,12 @@ void session_apply_setting(struct session *se, char *dbname, char *setting,
     }
 }
 
-void session_destroy(struct session *se) {
+void session_destroy(struct session *se)
+{
     struct session_database *sdb;
     session_log(se, YLOG_DEBUG, "Destroying");
     session_use(-1);
-    session_remove_clients(se);
+    session_remove_cached_clients(se);
 
     for (sdb = se->databases; sdb; sdb = sdb->next)
         session_database_destroy(sdb);
@@ -863,7 +918,9 @@ struct session *new_session(NMEM nmem, struct conf_service *service,
     session->number_of_warnings_unknown_metadata = 0;
     session->num_termlists = 0;
     session->reclist = 0;
-    session->clients = 0;
+    session->clients_active = 0;
+    session->clients_cached = 0;
+    session->settings_modified = 0;
     session->session_nmem = nmem;
     session->nmem = nmem_create();
     session->databases = 0;
@@ -888,12 +945,12 @@ static struct hitsbytarget *hitsbytarget_nb(struct session *se,
     struct client_list *l;
     size_t sz = 0;
 
-    for (l = se->clients; l; l = l->next)
+    for (l = se->clients_active; l; l = l->next)
         sz++;
 
     res = nmem_malloc(nmem, sizeof(*res) * sz);
     *count = 0;
-    for (l = se->clients; l; l = l->next)
+    for (l = se->clients_active; l; l = l->next)
     {
         struct client *cl = l->client;
         WRBUF w = wrbuf_alloc();
@@ -1135,7 +1192,7 @@ struct record_cluster **show_range_start(struct session *se,
         *total = reclist_get_num_records(se->reclist);
 
         *sumhits = 0;
-        for (l = se->clients; l; l = l->next)
+        for (l = se->clients_active; l; l = l->next)
             *sumhits += client_get_hits(l->client);
         
         for (i = 0; i < start; i++)
@@ -1180,7 +1237,7 @@ void statistics(struct session *se, struct statistics *stat)
 
     memset(stat, 0, sizeof(*stat));
     stat->num_hits = 0;
-    for (l = se->clients; l; l = l->next)
+    for (l = se->clients_active; l; l = l->next)
     {
         struct client *cl = l->client;
         if (!client_get_connection(cl))
@@ -1480,13 +1537,85 @@ int ingest_record(struct client *cl, const char *rec,
     }
     session_enter(se);
     if (client_get_session(cl) == se)
-        ingest_to_cluster(cl, xdoc, root, record_no, mergekey_norm);
+        ret = ingest_to_cluster(cl, xdoc, root, record_no, mergekey_norm);
     session_leave(se);
     
     xmlFreeDoc(xdoc);
     return ret;
 }
 
+static int check_limit_local(struct client *cl,
+                             struct record *record,
+                             int record_no)
+{
+    int skip_record = 0;
+    struct session *se = client_get_session(cl);
+    struct conf_service *service = se->service;
+    NMEM nmem_tmp = nmem_create();
+    struct session_database *sdb = client_get_database(cl);
+    int l = 0;
+    while (!skip_record)
+    {
+        struct conf_metadata *ser_md = 0;
+        struct record_metadata *rec_md = 0;
+        int md_field_id;
+        char **values = 0;
+        int i, num_v = 0;
+        
+        const char *name =
+            client_get_facet_limit_local(cl, sdb, &l, nmem_tmp, &num_v,
+                                         &values);
+        if (!name)
+            break;
+        
+        md_field_id = conf_service_metadata_field_id(service, name);
+        if (md_field_id < 0)
+        {
+            skip_record = 1;
+            break;
+        }
+        ser_md = &service->metadata[md_field_id];
+        rec_md = record->metadata[md_field_id];
+        yaz_log(YLOG_LOG, "check limit local %s", name);
+        for (i = 0; i < num_v; )
+        {
+            if (rec_md)
+            {
+                if (ser_md->type == Metadata_type_year 
+                    || ser_md->type == Metadata_type_date)
+                {
+                    int y = atoi(values[i]);
+                    if (y >= rec_md->data.number.min 
+                        && y <= rec_md->data.number.max)
+                        break;
+                }
+                else
+                {
+                    yaz_log(YLOG_LOG, "cmp: '%s' '%s'",
+                            rec_md->data.text.disp, values[i]);
+                    if (!strcmp(rec_md->data.text.disp, values[i]))
+                    {
+                        break;
+                    }
+                }
+                rec_md = rec_md->next;
+            }
+            else
+            {
+                rec_md = record->metadata[md_field_id];
+                i++;
+            }
+        }
+        if (i == num_v)
+        {
+            skip_record = 1;
+            break;
+        }
+    }
+    nmem_destroy(nmem_tmp);
+    return skip_record;
+}
+                             
 static int ingest_to_cluster(struct client *cl,
                              xmlDoc *xdoc,
                              xmlNode *root,
@@ -1560,6 +1689,16 @@ static int ingest_to_cluster(struct client *cl,
         }
     }
 
+    if (check_limit_local(cl, record, record_no))
+    {
+        session_log(se, YLOG_LOG, "Facet filtered out record no %d from %s",
+                    record_no, sdb->database->id);
+        if (type)
+            xmlFree(type);
+        if (value)
+            xmlFree(value);
+        return -2;
+    }
     cluster = reclist_insert(se->reclist, service, record,
                              mergekey_norm, &se->total_merged);
     if (!cluster)
index 98057d6..a819922 100644 (file)
@@ -102,7 +102,8 @@ struct client_list;
 struct session {
     struct conf_service *service; /* service in use for this session */
     struct session_database *databases;  // All databases, settings overriden
-    struct client_list *clients;   // Clients connected for current search
+    struct client_list *clients_active; // Clients connected for current search
+    struct client_list *clients_cached; // Clients in cache
     NMEM session_nmem;  // Nmem for session-permanent storage
     NMEM nmem;          // Nmem for each operation (i.e. search, result set, etc)
     int num_termlists;
@@ -117,6 +118,7 @@ struct session {
     normalize_cache_t normalize_cache;
     YAZ_MUTEX session_mutex;
     unsigned session_id;
+    int settings_modified;
     struct session_sorted_results *sorted_results;
 };
 
index 38c1d38..a33a2d0 100644 (file)
         </pz:metadata>
       </xsl:for-each>
       
-      <xsl:for-each select="marc:datafield[@tag='650' or @tag='653']">
+      <xsl:for-each select="marc:datafield[@tag='600' or @tag='610' or @tag='611' or @tag='630' or @tag='648' or @tag='650' or @tag='651' or @tag='653' or @tag='654' or @tag='655' or @tag='656' or @tag='657' or @tag='658' or @tag='662' or @tag='69X']">
        <pz:metadata type="subject">
          <xsl:value-of select="marc:subfield[@code='a']"/>
        </pz:metadata>
index 77c902f..d084f9e 100644 (file)
@@ -14,7 +14,7 @@
       <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="subject" brief="yes" merge="unique" termlist="yes" rank="3"/>
       <metadata name="id"/>
       <metadata name="lccn" merge="unique"/>
       <metadata name="description" brief="yes" merge="longest" rank="3"/>
index c6feb28..de45220 100644 (file)
@@ -55,9 +55,22 @@ http://localhost:9763/search.pz2?session=8&command=search&query=xyzzyz
 2 http://localhost:9763/search.pz2?session=8&command=show&block=1
 http://localhost:9763/search.pz2?session=8&command=search&query=a+and
 1 http://localhost:9763/search.pz2?session=8&command=show&block=1
-http://localhost:9763/search.pz2?command=init&pz:limitmap:author%5Bz3950.indexdata.com%2Fmarc%5D=ccl:author_phrase
-1 http://localhost:9763/search.pz2?session=9&command=search&query=greece&limit=author%3dadam\,+james%7Cother_author
+http://localhost:9763/search.pz2?command=init&pz:limitmap:author%5Bz3950.indexdata.com%2Fmarc%5D=ccl:author_phrase&pz:limitmap:subject%5Bz3950.indexdata.com%2fmarc%5D=local:&pz:limitmap:date%5Bz3950.indexdata.com%2fmarc%5D=local:
+1 http://localhost:9763/search.pz2?session=9&command=search&query=greece&limit=author%3Dadam\,+james%7Cother_author
 1 http://localhost:9763/search.pz2?session=9&command=show&block=1
-http://localhost:9763/search.pz2?session=9&command=settings&pz:limitmap:author%5Bz3950.indexdata.com%2Fmarc%5D=rpn:%40attr+1%3d1003+%40attr+6%3d3
-1 http://localhost:9763/search.pz2?session=9&command=search&query=greece&limit=author%3dadam\,+james%7Cother_author
+http://localhost:9763/search.pz2?session=9&command=settings&pz:limitmap:author%5Bz3950.indexdata.com%2Fmarc%5D=rpn:%40attr+1%3D1003+%40attr+6%3D3
+1 http://localhost:9763/search.pz2?session=9&command=search&query=greece&limit=author%3Dadam\,+james%7Cother_author
 1 http://localhost:9763/search.pz2?session=9&command=show&block=1
+http://localhost:9763/search.pz2?session=9&command=search&query=greece&limit=author%3Dadam\,+james%7Cother_author&filter=pz%3Aid%3Dz3950.indexdata.com%2Fmarc
+http://localhost:9763/search.pz2?session=9&command=bytarget
+http://localhost:9763/search.pz2?session=9&command=show
+http://localhost:9763/search.pz2?session=9&command=search&query=greece&limit=author%3Dadam\,+james%7Cother_author&filter=pz%3Aid%3Dnone
+http://localhost:9763/search.pz2?session=9&command=bytarget
+http://localhost:9763/search.pz2?session=9&command=show
+http://localhost:9763/search.pz2?session=9&command=search&query=greece&limit=author%3Dadam\,+james%7Cother_author
+http://localhost:9763/search.pz2?session=9&command=bytarget
+http://localhost:9763/search.pz2?session=9&command=show
+http://localhost:9763/search.pz2?session=9&command=search&query=computer&limit=subject%3DRailroads
+http://localhost:9763/search.pz2?session=9&command=show&block=1
+http://localhost:9763/search.pz2?session=9&command=search&query=computer&limit=date%3D1977
+http://localhost:9763/search.pz2?session=9&command=show&block=1
index 7d0e680..2678940 100644 (file)
@@ -9,9 +9,13 @@
 
 <md-title>The Computer Bible</md-title>
 <md-date>1973-1980</md-date>
+<md-subject>Bible. O.T</md-subject>
+<md-subject>Bible</md-subject>
 <md-description>Vols. 2, 8: Missoula, Mont. : Published by Scholars Press for Biblical Research Associates</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <md-title>The Computer Bible</md-title>
 <md-date>1973-1980</md-date>
+<md-subject>Bible. O.T</md-subject>
+<md-subject>Bible</md-subject>
 <md-description tag="500">Hebrew and Greek; introductions in English</md-description>
 <md-description tag="500">Vols. 2, 8: Missoula, Mont. : Published by Scholars Press for Biblical Research Associates</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 
 <md-title>Computer science &amp; technology</md-title>
 <md-title-remainder>proceedings of a workshop held at the National Bureau of Standards, Gaithersburg, MD, June 3-4, 1976</md-title-remainder>
-<md-date>1977</md-date><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
+<md-date>1977</md-date>
+<md-subject>Optical pattern recognition</md-subject><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <md-title>Computer science &amp; technology</md-title>
 <md-title-remainder>proceedings of a workshop held at the National Bureau of Standards, Gaithersburg, MD, June 3-4, 1976</md-title-remainder>
 <md-date>1977</md-date>
+<md-subject>Optical pattern recognition</md-subject>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
         YYYYYYYYY</md-test-usersetting-2></location>
 <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>
+<md-subject>Tomography</md-subject>
 <md-description>Includes bibliographical references and index</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <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>
+<md-subject>Tomography</md-subject>
 <md-description tag="504">Includes bibliographical references and index</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
 
 <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="z3950.indexdata.com/marc" name="Index Data MARC test server">
+<md-author>Wood, Helen M</md-author>
+<md-subject>Computers</md-subject><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <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>
+<md-subject>Computers</md-subject>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
         YYYYYYYYY</md-test-usersetting-2></location>
 <md-title>Computer processing of dynamic images from an Anger scintillation camera</md-title>
 <md-title-remainder>the proceedings of a workshop</md-title-remainder>
 <md-date>1974</md-date>
+<md-subject>Radioisotope scanning</md-subject>
+<md-subject>Scintillation cameras</md-subject>
+<md-subject>Imaging systems in medicine</md-subject>
 <md-description>Includes bibliographical references and index</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <md-title>Computer processing of dynamic images from an Anger scintillation camera</md-title>
 <md-title-remainder>the proceedings of a workshop</md-title-remainder>
 <md-date>1974</md-date>
+<md-subject>Radioisotope scanning</md-subject>
+<md-subject>Scintillation cameras</md-subject>
+<md-subject>Imaging systems in medicine</md-subject>
 <md-description tag="504">Includes bibliographical references and index</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
 <md-title-remainder>a portfolio of thematic computer maps</md-title-remainder>
 <md-date>1974</md-date>
 <md-author>Mairs, John W</md-author>
+<md-subject>Cartography</md-subject>
+<md-subject>Puget Sound region (Wash.)</md-subject>
 <md-description>Scale of maps ca. 1:1,000,000</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <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-author>Mairs, John W</md-author>
+<md-subject>Cartography</md-subject>
+<md-subject>Puget Sound region (Wash.)</md-subject>
 <md-description tag="500">Scale of maps ca. 1:1,000,000</md-description>
 <md-description tag="504">Bibliography: p. 4</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 
 <md-title>A plan for community college computer development</md-title>
 <md-date>1971</md-date>
+<md-subject>Universities and colleges</md-subject>
+<md-subject>Community colleges</md-subject>
 <md-description>Cover title</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <md-title>A plan for community college computer development</md-title>
 <md-date>1971</md-date>
+<md-subject>Universities and colleges</md-subject>
+<md-subject>Community colleges</md-subject>
 <md-description tag="500">Cover title</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
 <md-title-remainder>final report</md-title-remainder>
 <md-date>1971</md-date>
 <md-author>Englund, Carl R</md-author>
+<md-subject>Railroads</md-subject>
 <md-description>&quot;Contract DOT-UT-10003.&quot;</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <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-subject>Railroads</md-subject>
 <md-description tag="500">&quot;Contract DOT-UT-10003.&quot;</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
index 50799ac..8cfa59f 100644 (file)
@@ -9,9 +9,13 @@
 
 <md-title>A plan for community college computer development</md-title>
 <md-date>1971</md-date>
+<md-subject>Universities and colleges</md-subject>
+<md-subject>Community colleges</md-subject>
 <md-description>Cover title</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <md-title>A plan for community college computer development</md-title>
 <md-date>1971</md-date>
+<md-subject>Universities and colleges</md-subject>
+<md-subject>Community colleges</md-subject>
 <md-description tag="500">Cover title</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
 <md-title-remainder>final report</md-title-remainder>
 <md-date>1971</md-date>
 <md-author>Englund, Carl R</md-author>
+<md-subject>Railroads</md-subject>
 <md-description>&quot;Contract DOT-UT-10003.&quot;</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <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-subject>Railroads</md-subject>
 <md-description tag="500">&quot;Contract DOT-UT-10003.&quot;</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
 
 <md-title>The Computer Bible</md-title>
 <md-date>1973-1980</md-date>
+<md-subject>Bible. O.T</md-subject>
+<md-subject>Bible</md-subject>
 <md-description>Vols. 2, 8: Missoula, Mont. : Published by Scholars Press for Biblical Research Associates</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <md-title>The Computer Bible</md-title>
 <md-date>1973-1980</md-date>
+<md-subject>Bible. O.T</md-subject>
+<md-subject>Bible</md-subject>
 <md-description tag="500">Hebrew and Greek; introductions in English</md-description>
 <md-description tag="500">Vols. 2, 8: Missoula, Mont. : Published by Scholars Press for Biblical Research Associates</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-title>Computer processing of dynamic images from an Anger scintillation camera</md-title>
 <md-title-remainder>the proceedings of a workshop</md-title-remainder>
 <md-date>1974</md-date>
+<md-subject>Radioisotope scanning</md-subject>
+<md-subject>Scintillation cameras</md-subject>
+<md-subject>Imaging systems in medicine</md-subject>
 <md-description>Includes bibliographical references and index</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <md-title>Computer processing of dynamic images from an Anger scintillation camera</md-title>
 <md-title-remainder>the proceedings of a workshop</md-title-remainder>
 <md-date>1974</md-date>
+<md-subject>Radioisotope scanning</md-subject>
+<md-subject>Scintillation cameras</md-subject>
+<md-subject>Imaging systems in medicine</md-subject>
 <md-description tag="504">Includes bibliographical references and index</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
 <md-title-remainder>a portfolio of thematic computer maps</md-title-remainder>
 <md-date>1974</md-date>
 <md-author>Mairs, John W</md-author>
+<md-subject>Cartography</md-subject>
+<md-subject>Puget Sound region (Wash.)</md-subject>
 <md-description>Scale of maps ca. 1:1,000,000</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <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-author>Mairs, John W</md-author>
+<md-subject>Cartography</md-subject>
+<md-subject>Puget Sound region (Wash.)</md-subject>
 <md-description tag="500">Scale of maps ca. 1:1,000,000</md-description>
 <md-description tag="504">Bibliography: p. 4</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 
 <md-title>Computer science &amp; technology</md-title>
 <md-title-remainder>proceedings of a workshop held at the National Bureau of Standards, Gaithersburg, MD, June 3-4, 1976</md-title-remainder>
-<md-date>1977</md-date><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
+<md-date>1977</md-date>
+<md-subject>Optical pattern recognition</md-subject><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <md-title>Computer science &amp; technology</md-title>
 <md-title-remainder>proceedings of a workshop held at the National Bureau of Standards, Gaithersburg, MD, June 3-4, 1976</md-title-remainder>
 <md-date>1977</md-date>
+<md-subject>Optical pattern recognition</md-subject>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
         YYYYYYYYY</md-test-usersetting-2></location>
 <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>
+<md-subject>Tomography</md-subject>
 <md-description>Includes bibliographical references and index</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <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>
+<md-subject>Tomography</md-subject>
 <md-description tag="504">Includes bibliographical references and index</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
 
 <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="z3950.indexdata.com/marc" name="Index Data MARC test server">
+<md-author>Wood, Helen M</md-author>
+<md-subject>Computers</md-subject><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <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>
+<md-subject>Computers</md-subject>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
         YYYYYYYYY</md-test-usersetting-2></location>
index e8ead75..77a1857 100644 (file)
@@ -9,10 +9,12 @@
 
 <md-title>Computer science &amp; technology</md-title>
 <md-title-remainder>proceedings of a workshop held at the National Bureau of Standards, Gaithersburg, MD, June 3-4, 1976</md-title-remainder>
-<md-date>1977</md-date><location id="z3950.indexdata.com/marc" name="marc">
+<md-date>1977</md-date>
+<md-subject>Optical pattern recognition</md-subject><location id="z3950.indexdata.com/marc" name="marc">
 <md-title>Computer science &amp; technology</md-title>
 <md-title-remainder>proceedings of a workshop held at the National Bureau of Standards, Gaithersburg, MD, June 3-4, 1976</md-title-remainder>
 <md-date>1977</md-date>
+<md-subject>Optical pattern recognition</md-subject>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
         YYYYYYYYY</md-test-usersetting-2></location>
 
 <md-title>The Computer Bible</md-title>
 <md-date>1973-1980</md-date>
+<md-subject>Bible. O.T</md-subject>
+<md-subject>Bible</md-subject>
 <md-description>Vols. 2, 8: Missoula, Mont. : Published by Scholars Press for Biblical Research Associates</md-description><location id="z3950.indexdata.com/marc" name="marc">
 <md-title>The Computer Bible</md-title>
 <md-date>1973-1980</md-date>
+<md-subject>Bible. O.T</md-subject>
+<md-subject>Bible</md-subject>
 <md-description tag="500">Hebrew and Greek; introductions in English</md-description>
 <md-description tag="500">Vols. 2, 8: Missoula, Mont. : Published by Scholars Press for Biblical Research Associates</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 
 <md-title>A plan for community college computer development</md-title>
 <md-date>1971</md-date>
+<md-subject>Universities and colleges</md-subject>
+<md-subject>Community colleges</md-subject>
 <md-description>Cover title</md-description><location id="z3950.indexdata.com/marc" name="marc">
 <md-title>A plan for community college computer development</md-title>
 <md-date>1971</md-date>
+<md-subject>Universities and colleges</md-subject>
+<md-subject>Community colleges</md-subject>
 <md-description tag="500">Cover title</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
 <md-title-remainder>final report</md-title-remainder>
 <md-date>1971</md-date>
 <md-author>Englund, Carl R</md-author>
+<md-subject>Railroads</md-subject>
 <md-description>&quot;Contract DOT-UT-10003.&quot;</md-description><location id="z3950.indexdata.com/marc" name="marc">
 <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-subject>Railroads</md-subject>
 <md-description tag="500">&quot;Contract DOT-UT-10003.&quot;</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
 <md-title-remainder>a portfolio of thematic computer maps</md-title-remainder>
 <md-date>1974</md-date>
 <md-author>Mairs, John W</md-author>
+<md-subject>Cartography</md-subject>
+<md-subject>Puget Sound region (Wash.)</md-subject>
 <md-description>Scale of maps ca. 1:1,000,000</md-description><location id="z3950.indexdata.com/marc" name="marc">
 <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-author>Mairs, John W</md-author>
+<md-subject>Cartography</md-subject>
+<md-subject>Puget Sound region (Wash.)</md-subject>
 <md-description tag="500">Scale of maps ca. 1:1,000,000</md-description>
 <md-description tag="504">Bibliography: p. 4</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-title>Computer processing of dynamic images from an Anger scintillation camera</md-title>
 <md-title-remainder>the proceedings of a workshop</md-title-remainder>
 <md-date>1974</md-date>
+<md-subject>Radioisotope scanning</md-subject>
+<md-subject>Scintillation cameras</md-subject>
+<md-subject>Imaging systems in medicine</md-subject>
 <md-description>Includes bibliographical references and index</md-description><location id="z3950.indexdata.com/marc" name="marc">
 <md-title>Computer processing of dynamic images from an Anger scintillation camera</md-title>
 <md-title-remainder>the proceedings of a workshop</md-title-remainder>
 <md-date>1974</md-date>
+<md-subject>Radioisotope scanning</md-subject>
+<md-subject>Scintillation cameras</md-subject>
+<md-subject>Imaging systems in medicine</md-subject>
 <md-description tag="504">Includes bibliographical references and index</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
 
 <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="z3950.indexdata.com/marc" name="marc">
+<md-author>Wood, Helen M</md-author>
+<md-subject>Computers</md-subject><location id="z3950.indexdata.com/marc" name="marc">
 <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>
+<md-subject>Computers</md-subject>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
         YYYYYYYYY</md-test-usersetting-2></location>
 <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>
+<md-subject>Tomography</md-subject>
 <md-description>Includes bibliographical references and index</md-description><location id="z3950.indexdata.com/marc" name="marc">
 <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>
+<md-subject>Tomography</md-subject>
 <md-description tag="504">Includes bibliographical references and index</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
index 67eb248..49f526b 100644 (file)
 <md-title>The religious teachers of Greece</md-title>
 <md-date>1972</md-date>
 <md-author>Adam, James</md-author>
+<md-subject>Greek literature</md-subject>
+<md-subject>Philosophy, Ancient</md-subject>
+<md-subject>Greece</md-subject>
 <md-description>Reprint of the 1909 ed., which was issued as the 1904-1906 Gifford lectures</md-description><location id="z3950.indexdata.com/marc" name="marc">
 <md-title>The religious teachers of Greece</md-title>
 <md-date>1972</md-date>
 <md-author>Adam, James</md-author>
+<md-subject>Greek literature</md-subject>
+<md-subject>Philosophy, Ancient</md-subject>
+<md-subject>Greece</md-subject>
 <md-description tag="500">Reprint of the 1909 ed., which was issued as the 1904-1906 Gifford lectures</md-description>
 <md-description tag="504">Includes bibliographical references</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-title-remainder>a portfolio of thematic computer maps</md-title-remainder>
 <md-date>1974</md-date>
 <md-author>Mairs, John W</md-author>
+<md-subject>Cartography</md-subject>
+<md-subject>Puget Sound region (Wash.)</md-subject>
 <md-description>Scale of maps ca. 1:1,000,000</md-description><location id="z3950.indexdata.com/marc" name="marc">
 <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-author>Mairs, John W</md-author>
+<md-subject>Cartography</md-subject>
+<md-subject>Puget Sound region (Wash.)</md-subject>
 <md-description tag="500">Scale of maps ca. 1:1,000,000</md-description>
 <md-description tag="504">Bibliography: p. 4</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <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>
+<md-subject>Tomography</md-subject>
 <md-description>Includes bibliographical references and index</md-description><location id="z3950.indexdata.com/marc" name="marc">
 <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>
+<md-subject>Tomography</md-subject>
 <md-description tag="504">Includes bibliographical references and index</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
 
 <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="z3950.indexdata.com/marc" name="marc">
+<md-author>Wood, Helen M</md-author>
+<md-subject>Computers</md-subject><location id="z3950.indexdata.com/marc" name="marc">
 <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>
+<md-subject>Computers</md-subject>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
         YYYYYYYYY</md-test-usersetting-2></location>
 
 <md-title>Computer science &amp; technology</md-title>
 <md-title-remainder>proceedings of a workshop held at the National Bureau of Standards, Gaithersburg, MD, June 3-4, 1976</md-title-remainder>
-<md-date>1977</md-date><location id="z3950.indexdata.com/marc" name="marc">
+<md-date>1977</md-date>
+<md-subject>Optical pattern recognition</md-subject><location id="z3950.indexdata.com/marc" name="marc">
 <md-title>Computer science &amp; technology</md-title>
 <md-title-remainder>proceedings of a workshop held at the National Bureau of Standards, Gaithersburg, MD, June 3-4, 1976</md-title-remainder>
 <md-date>1977</md-date>
+<md-subject>Optical pattern recognition</md-subject>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
         YYYYYYYYY</md-test-usersetting-2></location>
index f4f9579..ce9623a 100644 (file)
 <md-title>Computer processing of dynamic images from an Anger scintillation camera</md-title>
 <md-title-remainder>the proceedings of a workshop</md-title-remainder>
 <md-date>1974</md-date>
+<md-subject>Radioisotope scanning</md-subject>
+<md-subject>Scintillation cameras</md-subject>
+<md-subject>Imaging systems in medicine</md-subject>
 <md-description>Includes bibliographical references and index</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <md-title>Computer processing of dynamic images from an Anger scintillation camera</md-title>
 <md-title-remainder>the proceedings of a workshop</md-title-remainder>
 <md-date>1974</md-date>
+<md-subject>Radioisotope scanning</md-subject>
+<md-subject>Scintillation cameras</md-subject>
+<md-subject>Imaging systems in medicine</md-subject>
 <md-description tag="504">Includes bibliographical references and index</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
index ecb7374..70b1451 100644 (file)
 <md-title>The religious teachers of Greece</md-title>
 <md-date>1972</md-date>
 <md-author>Adam, James</md-author>
+<md-subject>Greek literature</md-subject>
+<md-subject>Philosophy, Ancient</md-subject>
+<md-subject>Greece</md-subject>
 <md-description>Reprint of the 1909 ed., which was issued as the 1904-1906 Gifford lectures</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <md-title>The religious teachers of Greece</md-title>
 <md-date>1972</md-date>
 <md-author>Adam, James</md-author>
+<md-subject>Greek literature</md-subject>
+<md-subject>Philosophy, Ancient</md-subject>
+<md-subject>Greece</md-subject>
 <md-description tag="500">Reprint of the 1909 ed., which was issued as the 1904-1906 Gifford lectures</md-description>
 <md-description tag="504">Includes bibliographical references</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
         YYYYYYYYY</md-test-usersetting-2></location>
-<relevance>120000</relevance>
+<relevance>420000</relevance>
 <recid>content: title the religious teachers of greece author adam james medium book</recid>
 </hit>
 </show>
\ No newline at end of file
index 1c1d8d3..c045cc2 100644 (file)
 
 <md-title>Computer science &amp; technology</md-title>
 <md-title-remainder>proceedings of a workshop held at the National Bureau of Standards, Gaithersburg, MD, June 3-4, 1976</md-title-remainder>
-<md-date>1977</md-date><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
+<md-date>1977</md-date>
+<md-subject>Optical pattern recognition</md-subject><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <md-title>Computer science &amp; technology</md-title>
 <md-title-remainder>proceedings of a workshop held at the National Bureau of Standards, Gaithersburg, MD, June 3-4, 1976</md-title-remainder>
 <md-date>1977</md-date>
+<md-subject>Optical pattern recognition</md-subject>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
         YYYYYYYYY</md-test-usersetting-2></location>
 
 <md-title>The Computer Bible</md-title>
 <md-date>1973-1980</md-date>
+<md-subject>Bible. O.T</md-subject>
+<md-subject>Bible</md-subject>
 <md-description>Vols. 2, 8: Missoula, Mont. : Published by Scholars Press for Biblical Research Associates</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <md-title>The Computer Bible</md-title>
 <md-date>1973-1980</md-date>
+<md-subject>Bible. O.T</md-subject>
+<md-subject>Bible</md-subject>
 <md-description tag="500">Hebrew and Greek; introductions in English</md-description>
 <md-description tag="500">Vols. 2, 8: Missoula, Mont. : Published by Scholars Press for Biblical Research Associates</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 
 <md-title>A plan for community college computer development</md-title>
 <md-date>1971</md-date>
+<md-subject>Universities and colleges</md-subject>
+<md-subject>Community colleges</md-subject>
 <md-description>Cover title</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <md-title>A plan for community college computer development</md-title>
 <md-date>1971</md-date>
+<md-subject>Universities and colleges</md-subject>
+<md-subject>Community colleges</md-subject>
 <md-description tag="500">Cover title</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
 <md-title-remainder>final report</md-title-remainder>
 <md-date>1971</md-date>
 <md-author>Englund, Carl R</md-author>
+<md-subject>Railroads</md-subject>
 <md-description>&quot;Contract DOT-UT-10003.&quot;</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <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-subject>Railroads</md-subject>
 <md-description tag="500">&quot;Contract DOT-UT-10003.&quot;</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
 <md-title-remainder>a portfolio of thematic computer maps</md-title-remainder>
 <md-date>1974</md-date>
 <md-author>Mairs, John W</md-author>
+<md-subject>Cartography</md-subject>
+<md-subject>Puget Sound region (Wash.)</md-subject>
 <md-description>Scale of maps ca. 1:1,000,000</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <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-author>Mairs, John W</md-author>
+<md-subject>Cartography</md-subject>
+<md-subject>Puget Sound region (Wash.)</md-subject>
 <md-description tag="500">Scale of maps ca. 1:1,000,000</md-description>
 <md-description tag="504">Bibliography: p. 4</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-title>Computer processing of dynamic images from an Anger scintillation camera</md-title>
 <md-title-remainder>the proceedings of a workshop</md-title-remainder>
 <md-date>1974</md-date>
+<md-subject>Radioisotope scanning</md-subject>
+<md-subject>Scintillation cameras</md-subject>
+<md-subject>Imaging systems in medicine</md-subject>
 <md-description>Includes bibliographical references and index</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <md-title>Computer processing of dynamic images from an Anger scintillation camera</md-title>
 <md-title-remainder>the proceedings of a workshop</md-title-remainder>
 <md-date>1974</md-date>
+<md-subject>Radioisotope scanning</md-subject>
+<md-subject>Scintillation cameras</md-subject>
+<md-subject>Imaging systems in medicine</md-subject>
 <md-description tag="504">Includes bibliographical references and index</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
 
 <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="z3950.indexdata.com/marc" name="Index Data MARC test server">
+<md-author>Wood, Helen M</md-author>
+<md-subject>Computers</md-subject><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <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>
+<md-subject>Computers</md-subject>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
         YYYYYYYYY</md-test-usersetting-2></location>
 <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>
+<md-subject>Tomography</md-subject>
 <md-description>Includes bibliographical references and index</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <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>
+<md-subject>Tomography</md-subject>
 <md-description tag="504">Includes bibliographical references and index</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
index f4f9579..ce9623a 100644 (file)
 <md-title>Computer processing of dynamic images from an Anger scintillation camera</md-title>
 <md-title-remainder>the proceedings of a workshop</md-title-remainder>
 <md-date>1974</md-date>
+<md-subject>Radioisotope scanning</md-subject>
+<md-subject>Scintillation cameras</md-subject>
+<md-subject>Imaging systems in medicine</md-subject>
 <md-description>Includes bibliographical references and index</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <md-title>Computer processing of dynamic images from an Anger scintillation camera</md-title>
 <md-title-remainder>the proceedings of a workshop</md-title-remainder>
 <md-date>1974</md-date>
+<md-subject>Radioisotope scanning</md-subject>
+<md-subject>Scintillation cameras</md-subject>
+<md-subject>Imaging systems in medicine</md-subject>
 <md-description tag="504">Includes bibliographical references and index</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
index 28b128f..f9283fd 100644 (file)
 <md-title>The religious teachers of Greece</md-title>
 <md-date>1972</md-date>
 <md-author>Adam, James</md-author>
+<md-subject>Greek literature</md-subject>
+<md-subject>Philosophy, Ancient</md-subject>
+<md-subject>Greece</md-subject>
 <md-description>Reprint of the 1909 ed., which was issued as the 1904-1906 Gifford lectures</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <md-title>The religious teachers of Greece</md-title>
 <md-date>1972</md-date>
 <md-author>Adam, James</md-author>
+<md-subject>Greek literature</md-subject>
+<md-subject>Philosophy, Ancient</md-subject>
+<md-subject>Greece</md-subject>
 <md-description tag="500">Reprint of the 1909 ed., which was issued as the 1904-1906 Gifford lectures</md-description>
 <md-description tag="504">Includes bibliographical references</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
         YYYYYYYYY</md-test-usersetting-2></location>
-<relevance>320000</relevance>
+<relevance>620000</relevance>
 <recid>content: title the religious teachers of greece author adam james medium book</recid>
 </hit>
 </show>
\ No newline at end of file
index ecb7374..70b1451 100644 (file)
 <md-title>The religious teachers of Greece</md-title>
 <md-date>1972</md-date>
 <md-author>Adam, James</md-author>
+<md-subject>Greek literature</md-subject>
+<md-subject>Philosophy, Ancient</md-subject>
+<md-subject>Greece</md-subject>
 <md-description>Reprint of the 1909 ed., which was issued as the 1904-1906 Gifford lectures</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <md-title>The religious teachers of Greece</md-title>
 <md-date>1972</md-date>
 <md-author>Adam, James</md-author>
+<md-subject>Greek literature</md-subject>
+<md-subject>Philosophy, Ancient</md-subject>
+<md-subject>Greece</md-subject>
 <md-description tag="500">Reprint of the 1909 ed., which was issued as the 1904-1906 Gifford lectures</md-description>
 <md-description tag="504">Includes bibliographical references</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
         YYYYYYYYY</md-test-usersetting-2></location>
-<relevance>120000</relevance>
+<relevance>420000</relevance>
 <recid>content: title the religious teachers of greece author adam james medium book</recid>
 </hit>
 </show>
\ No newline at end of file
diff --git a/test/test_http_64.res b/test/test_http_64.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_http_65.res b/test/test_http_65.res
new file mode 100644 (file)
index 0000000..b24d50f
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bytarget><status>OK</status>
+<target><id>z3950.indexdata.com/marc</id>
+<name>Index Data MARC test server</name>
+<hits>1</hits>
+<diagnostic>0</diagnostic>
+<records>1</records>
+<state>Client_Idle</state>
+</target></bytarget>
\ No newline at end of file
diff --git a/test/test_http_66.res b/test/test_http_66.res
new file mode 100644 (file)
index 0000000..70b1451
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<show><status>OK</status>
+<activeclients>0</activeclients>
+<merged>1</merged>
+<total>1</total>
+<start>0</start>
+<num>1</num>
+<hit>
+
+<md-title>The religious teachers of Greece</md-title>
+<md-date>1972</md-date>
+<md-author>Adam, James</md-author>
+<md-subject>Greek literature</md-subject>
+<md-subject>Philosophy, Ancient</md-subject>
+<md-subject>Greece</md-subject>
+<md-description>Reprint of the 1909 ed., which was issued as the 1904-1906 Gifford lectures</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
+<md-title>The religious teachers of Greece</md-title>
+<md-date>1972</md-date>
+<md-author>Adam, James</md-author>
+<md-subject>Greek literature</md-subject>
+<md-subject>Philosophy, Ancient</md-subject>
+<md-subject>Greece</md-subject>
+<md-description tag="500">Reprint of the 1909 ed., which was issued as the 1904-1906 Gifford lectures</md-description>
+<md-description tag="504">Includes bibliographical references</md-description>
+<md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
+<md-test-usersetting-2>test-usersetting-2 data: 
+        YYYYYYYYY</md-test-usersetting-2></location>
+<relevance>420000</relevance>
+<recid>content: title the religious teachers of greece author adam james medium book</recid>
+</hit>
+</show>
\ No newline at end of file
diff --git a/test/test_http_67.res b/test/test_http_67.res
new file mode 100644 (file)
index 0000000..d486aeb
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<error code="8" msg="No targets"></error>
\ No newline at end of file
diff --git a/test/test_http_68.res b/test/test_http_68.res
new file mode 100644 (file)
index 0000000..e506085
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bytarget><status>OK</status></bytarget>
\ No newline at end of file
diff --git a/test/test_http_69.res b/test/test_http_69.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_http_70.res b/test/test_http_70.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_http_71.res b/test/test_http_71.res
new file mode 100644 (file)
index 0000000..b24d50f
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bytarget><status>OK</status>
+<target><id>z3950.indexdata.com/marc</id>
+<name>Index Data MARC test server</name>
+<hits>1</hits>
+<diagnostic>0</diagnostic>
+<records>1</records>
+<state>Client_Idle</state>
+</target></bytarget>
\ No newline at end of file
diff --git a/test/test_http_72.res b/test/test_http_72.res
new file mode 100644 (file)
index 0000000..70b1451
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<show><status>OK</status>
+<activeclients>0</activeclients>
+<merged>1</merged>
+<total>1</total>
+<start>0</start>
+<num>1</num>
+<hit>
+
+<md-title>The religious teachers of Greece</md-title>
+<md-date>1972</md-date>
+<md-author>Adam, James</md-author>
+<md-subject>Greek literature</md-subject>
+<md-subject>Philosophy, Ancient</md-subject>
+<md-subject>Greece</md-subject>
+<md-description>Reprint of the 1909 ed., which was issued as the 1904-1906 Gifford lectures</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
+<md-title>The religious teachers of Greece</md-title>
+<md-date>1972</md-date>
+<md-author>Adam, James</md-author>
+<md-subject>Greek literature</md-subject>
+<md-subject>Philosophy, Ancient</md-subject>
+<md-subject>Greece</md-subject>
+<md-description tag="500">Reprint of the 1909 ed., which was issued as the 1904-1906 Gifford lectures</md-description>
+<md-description tag="504">Includes bibliographical references</md-description>
+<md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
+<md-test-usersetting-2>test-usersetting-2 data: 
+        YYYYYYYYY</md-test-usersetting-2></location>
+<relevance>420000</relevance>
+<recid>content: title the religious teachers of greece author adam james medium book</recid>
+</hit>
+</show>
\ No newline at end of file
diff --git a/test/test_http_73.res b/test/test_http_73.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_http_74.res b/test/test_http_74.res
new file mode 100644 (file)
index 0000000..64e8673
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<show><status>OK</status>
+<activeclients>0</activeclients>
+<merged>1</merged>
+<total>10</total>
+<start>0</start>
+<num>1</num>
+<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-subject>Railroads</md-subject>
+<md-description>&quot;Contract DOT-UT-10003.&quot;</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
+<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-subject>Railroads</md-subject>
+<md-description tag="500">&quot;Contract DOT-UT-10003.&quot;</md-description>
+<md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
+<md-test-usersetting-2>test-usersetting-2 data: 
+        YYYYYYYYY</md-test-usersetting-2></location>
+<relevance>85714</relevance>
+<recid>content: title washington metropolitan area rail computer feasibility study author englund carl r medium book</recid>
+</hit>
+</show>
\ No newline at end of file
diff --git a/test/test_http_75.res b/test/test_http_75.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_http_76.res b/test/test_http_76.res
new file mode 100644 (file)
index 0000000..ba0f848
--- /dev/null
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<show><status>OK</status>
+<activeclients>0</activeclients>
+<merged>4</merged>
+<total>10</total>
+<start>0</start>
+<num>4</num>
+<hit>
+
+<md-title>Computer science &amp; technology</md-title>
+<md-title-remainder>proceedings of a workshop held at the National Bureau of Standards, Gaithersburg, MD, June 3-4, 1976</md-title-remainder>
+<md-date>1977</md-date>
+<md-subject>Optical pattern recognition</md-subject><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
+<md-title>Computer science &amp; technology</md-title>
+<md-title-remainder>proceedings of a workshop held at the National Bureau of Standards, Gaithersburg, MD, June 3-4, 1976</md-title-remainder>
+<md-date>1977</md-date>
+<md-subject>Optical pattern recognition</md-subject>
+<md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
+<md-test-usersetting-2>test-usersetting-2 data: 
+        YYYYYYYYY</md-test-usersetting-2></location>
+<relevance>57536</relevance>
+<recid>content: title computer science technology author medium book</recid>
+</hit>
+<hit>
+
+<md-title>The Computer Bible</md-title>
+<md-date>1973-1980</md-date>
+<md-subject>Bible. O.T</md-subject>
+<md-subject>Bible</md-subject>
+<md-description>Vols. 2, 8: Missoula, Mont. : Published by Scholars Press for Biblical Research Associates</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
+<md-title>The Computer Bible</md-title>
+<md-date>1973-1980</md-date>
+<md-subject>Bible. O.T</md-subject>
+<md-subject>Bible</md-subject>
+<md-description tag="500">Hebrew and Greek; introductions in English</md-description>
+<md-description tag="500">Vols. 2, 8: Missoula, Mont. : Published by Scholars Press for Biblical Research Associates</md-description>
+<md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
+<md-test-usersetting-2>test-usersetting-2 data: 
+        YYYYYYYYY</md-test-usersetting-2></location>
+<relevance>57536</relevance>
+<recid>content: title the computer bible author medium book</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>
+<md-subject>Computers</md-subject><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
+<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>
+<md-subject>Computers</md-subject>
+<md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
+<md-test-usersetting-2>test-usersetting-2 data: 
+        YYYYYYYYY</md-test-usersetting-2></location>
+<relevance>17260</relevance>
+<recid>content: title the use of passwords for controlled access to computer resources author wood helen m medium book</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>
+<md-subject>Tomography</md-subject>
+<md-description>Includes bibliographical references and index</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
+<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>
+<md-subject>Tomography</md-subject>
+<md-description tag="504">Includes bibliographical references and index</md-description>
+<md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
+<md-test-usersetting-2>test-usersetting-2 data: 
+        YYYYYYYYY</md-test-usersetting-2></location>
+<relevance>0</relevance>
+<recid>content: title reconstruction tomography in diagnostic radiology and nuclear medicine author medium book</recid>
+</hit>
+</show>
\ No newline at end of file
index 5375925..d39c96f 100644 (file)
 <md-title-remainder>final report</md-title-remainder>
 <md-date>1971</md-date>
 <md-author>Englund, Carl R</md-author>
+<md-subject>Railroads</md-subject>
 <md-description>&quot;Contract DOT-UT-10003.&quot;</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <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-subject>Railroads</md-subject>
 <md-description tag="500">&quot;Contract DOT-UT-10003.&quot;</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
 
 <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="z3950.indexdata.com/marc" name="Index Data MARC test server">
+<md-author>Wood, Helen M</md-author>
+<md-subject>Computers</md-subject><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <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>
+<md-subject>Computers</md-subject>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
         YYYYYYYYY</md-test-usersetting-2></location>
 <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>
+<md-subject>Tomography</md-subject>
 <md-description>Includes bibliographical references and index</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <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>
+<md-subject>Tomography</md-subject>
 <md-description tag="504">Includes bibliographical references and index</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
 <md-title-remainder>a portfolio of thematic computer maps</md-title-remainder>
 <md-date>1974</md-date>
 <md-author>Mairs, John W</md-author>
+<md-subject>Cartography</md-subject>
+<md-subject>Puget Sound region (Wash.)</md-subject>
 <md-description>Scale of maps ca. 1:1,000,000</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <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-author>Mairs, John W</md-author>
+<md-subject>Cartography</md-subject>
+<md-subject>Puget Sound region (Wash.)</md-subject>
 <md-description tag="500">Scale of maps ca. 1:1,000,000</md-description>
 <md-description tag="504">Bibliography: p. 4</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 
 <md-title>A plan for community college computer development</md-title>
 <md-date>1971</md-date>
+<md-subject>Universities and colleges</md-subject>
+<md-subject>Community colleges</md-subject>
 <md-description>Cover title</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <md-title>A plan for community college computer development</md-title>
 <md-date>1971</md-date>
+<md-subject>Universities and colleges</md-subject>
+<md-subject>Community colleges</md-subject>
 <md-description tag="500">Cover title</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
 
 <md-title>Computer science &amp; technology</md-title>
 <md-title-remainder>proceedings of a workshop held at the National Bureau of Standards, Gaithersburg, MD, June 3-4, 1976</md-title-remainder>
-<md-date>1977</md-date><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
+<md-date>1977</md-date>
+<md-subject>Optical pattern recognition</md-subject><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <md-title>Computer science &amp; technology</md-title>
 <md-title-remainder>proceedings of a workshop held at the National Bureau of Standards, Gaithersburg, MD, June 3-4, 1976</md-title-remainder>
 <md-date>1977</md-date>
+<md-subject>Optical pattern recognition</md-subject>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
         YYYYYYYYY</md-test-usersetting-2></location>
 <md-title>Computer processing of dynamic images from an Anger scintillation camera</md-title>
 <md-title-remainder>the proceedings of a workshop</md-title-remainder>
 <md-date>1974</md-date>
+<md-subject>Radioisotope scanning</md-subject>
+<md-subject>Scintillation cameras</md-subject>
+<md-subject>Imaging systems in medicine</md-subject>
 <md-description>Includes bibliographical references and index</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <md-title>Computer processing of dynamic images from an Anger scintillation camera</md-title>
 <md-title-remainder>the proceedings of a workshop</md-title-remainder>
 <md-date>1974</md-date>
+<md-subject>Radioisotope scanning</md-subject>
+<md-subject>Scintillation cameras</md-subject>
+<md-subject>Imaging systems in medicine</md-subject>
 <md-description tag="504">Includes bibliographical references and index</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
 
 <md-title>The Computer Bible</md-title>
 <md-date>1973-1980</md-date>
+<md-subject>Bible. O.T</md-subject>
+<md-subject>Bible</md-subject>
 <md-description>Vols. 2, 8: Missoula, Mont. : Published by Scholars Press for Biblical Research Associates</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <md-title>The Computer Bible</md-title>
 <md-date>1973-1980</md-date>
+<md-subject>Bible. O.T</md-subject>
+<md-subject>Bible</md-subject>
 <md-description tag="500">Hebrew and Greek; introductions in English</md-description>
 <md-description tag="500">Vols. 2, 8: Missoula, Mont. : Published by Scholars Press for Biblical Research Associates</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
index fcefa9b..41a8c73 100644 (file)
@@ -9,9 +9,13 @@
 
 <md-title>The Computer Bible</md-title>
 <md-date>1973-1980</md-date>
+<md-subject>Bible. O.T</md-subject>
+<md-subject>Bible</md-subject>
 <md-description>Vols. 2, 8: Missoula, Mont. : Published by Scholars Press for Biblical Research Associates</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <md-title>The Computer Bible</md-title>
 <md-date>1973-1980</md-date>
+<md-subject>Bible. O.T</md-subject>
+<md-subject>Bible</md-subject>
 <md-description tag="500">Hebrew and Greek; introductions in English</md-description>
 <md-description tag="500">Vols. 2, 8: Missoula, Mont. : Published by Scholars Press for Biblical Research Associates</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-title>Computer processing of dynamic images from an Anger scintillation camera</md-title>
 <md-title-remainder>the proceedings of a workshop</md-title-remainder>
 <md-date>1974</md-date>
+<md-subject>Radioisotope scanning</md-subject>
+<md-subject>Scintillation cameras</md-subject>
+<md-subject>Imaging systems in medicine</md-subject>
 <md-description>Includes bibliographical references and index</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <md-title>Computer processing of dynamic images from an Anger scintillation camera</md-title>
 <md-title-remainder>the proceedings of a workshop</md-title-remainder>
 <md-date>1974</md-date>
+<md-subject>Radioisotope scanning</md-subject>
+<md-subject>Scintillation cameras</md-subject>
+<md-subject>Imaging systems in medicine</md-subject>
 <md-description tag="504">Includes bibliographical references and index</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
 
 <md-title>Computer science &amp; technology</md-title>
 <md-title-remainder>proceedings of a workshop held at the National Bureau of Standards, Gaithersburg, MD, June 3-4, 1976</md-title-remainder>
-<md-date>1977</md-date><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
+<md-date>1977</md-date>
+<md-subject>Optical pattern recognition</md-subject><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <md-title>Computer science &amp; technology</md-title>
 <md-title-remainder>proceedings of a workshop held at the National Bureau of Standards, Gaithersburg, MD, June 3-4, 1976</md-title-remainder>
 <md-date>1977</md-date>
+<md-subject>Optical pattern recognition</md-subject>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
         YYYYYYYYY</md-test-usersetting-2></location>
 
 <md-title>A plan for community college computer development</md-title>
 <md-date>1971</md-date>
+<md-subject>Universities and colleges</md-subject>
+<md-subject>Community colleges</md-subject>
 <md-description>Cover title</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <md-title>A plan for community college computer development</md-title>
 <md-date>1971</md-date>
+<md-subject>Universities and colleges</md-subject>
+<md-subject>Community colleges</md-subject>
 <md-description tag="500">Cover title</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
 <md-title-remainder>a portfolio of thematic computer maps</md-title-remainder>
 <md-date>1974</md-date>
 <md-author>Mairs, John W</md-author>
+<md-subject>Cartography</md-subject>
+<md-subject>Puget Sound region (Wash.)</md-subject>
 <md-description>Scale of maps ca. 1:1,000,000</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <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-author>Mairs, John W</md-author>
+<md-subject>Cartography</md-subject>
+<md-subject>Puget Sound region (Wash.)</md-subject>
 <md-description tag="500">Scale of maps ca. 1:1,000,000</md-description>
 <md-description tag="504">Bibliography: p. 4</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <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>
+<md-subject>Tomography</md-subject>
 <md-description>Includes bibliographical references and index</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <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>
+<md-subject>Tomography</md-subject>
 <md-description tag="504">Includes bibliographical references and index</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
 
 <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="z3950.indexdata.com/marc" name="Index Data MARC test server">
+<md-author>Wood, Helen M</md-author>
+<md-subject>Computers</md-subject><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <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>
+<md-subject>Computers</md-subject>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
         YYYYYYYYY</md-test-usersetting-2></location>
 <md-title-remainder>final report</md-title-remainder>
 <md-date>1971</md-date>
 <md-author>Englund, Carl R</md-author>
+<md-subject>Railroads</md-subject>
 <md-description>&quot;Contract DOT-UT-10003.&quot;</md-description><location id="z3950.indexdata.com/marc" name="Index Data MARC test server">
 <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-subject>Railroads</md-subject>
 <md-description tag="500">&quot;Contract DOT-UT-10003.&quot;</md-description>
 <md-test-usersetting>XXXXXXXXXX</md-test-usersetting>
 <md-test-usersetting-2>test-usersetting-2 data: 
index 80dde63..05af6d5 100644 (file)
@@ -7,11 +7,14 @@
 <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. O.t</name><frequency>1</frequency></term>
 <term><name>Cartography</name><frequency>1</frequency></term>
 <term><name>Community Colleges</name><frequency>1</frequency></term>
 <term><name>Computers</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>Railroads</name><frequency>1</frequency></term>
 <term><name>Scintillation Cameras</name><frequency>1</frequency></term>