X-Git-Url: http://lists.indexdata.dk/cgi-bin?a=blobdiff_plain;f=src%2Fpazpar2.c;h=2c05b8ce13a7801aa0d3cfa285dbf1c328409746;hb=e161d8d877ae9a61153f2ceb3956a48c3b0ef778;hp=1f23d6cbce26c8b7a7cbb22f881b9dfe2e35e3e1;hpb=df1fd6502c261c3939c5799b23cbb1bf66c13c0c;p=pazpar2-moved-to-github.git diff --git a/src/pazpar2.c b/src/pazpar2.c index 1f23d6c..2c05b8c 100644 --- a/src/pazpar2.c +++ b/src/pazpar2.c @@ -1,4 +1,4 @@ -/* $Id: pazpar2.c,v 1.35 2007-01-16 03:38:49 quinn Exp $ */ +/* $Id: pazpar2.c,v 1.39 2007-01-16 23:42:10 quinn Exp $ */ #include #include @@ -491,8 +491,8 @@ static struct record *ingest_record(struct client *cl, Z_External *rec) struct record_cluster *cluster; struct session *se = cl->session; xmlChar *mergekey, *mergekey_norm; - xmlChar *type; - xmlChar *value; + xmlChar *type = 0; + xmlChar *value = 0; struct conf_service *service = global_parameters.server->service; if (!xdoc) @@ -517,6 +517,9 @@ static struct record *ingest_record(struct client *cl, Z_External *rec) normalize_mergekey(mergekey_norm, 0); cluster = reclist_insert(se->reclist, res, mergekey_norm, &se->total_merged); + if (global_parameters.dump_records) + yaz_log(YLOG_LOG, "Cluster id %d from %s (#%d)", cluster->recid, + cl->database->url, cl->records); if (!cluster) { /* no room for record */ @@ -525,7 +528,6 @@ static struct record *ingest_record(struct client *cl, Z_External *rec) } relevance_newrec(se->relevance, cluster); - type = value = 0; for (n = root->children; n; n = n->next) { if (type) @@ -546,6 +548,10 @@ static struct record *ingest_record(struct client *cl, Z_External *rec) type = xmlGetProp(n, "type"); value = xmlNodeListGetString(xdoc, n->children, 0); + + if (!type || !value) + continue; + // First, find out what field we're looking at for (imeta = 0; imeta < service->num_metadata; imeta++) if (!strcmp(type, service->metadata[imeta].name)) @@ -646,12 +652,6 @@ static struct record *ingest_record(struct client *cl, Z_External *rec) (*wheretoput)->data.number.min = first; if (last > (*wheretoput)->data.number.max) (*wheretoput)->data.number.max = last; - if (sk) - { - union data_types *sdata = cluster->sortkeys[md->sortkey_offset]; - sdata->number.min = first; - sdata->number.max = last; - } } #ifdef GAGA if (sk) @@ -675,6 +675,10 @@ static struct record *ingest_record(struct client *cl, Z_External *rec) else yaz_log(YLOG_WARN, "Unexpected element %s in internal record", n->name); } + if (type) + xmlFree(type); + if (value) + xmlFree(value); xmlFreeDoc(xdoc); @@ -701,6 +705,7 @@ static void ingest_records(struct client *cl, Z_Records *r) { Z_NamePlusRecord *npr = rlist->records[i]; + cl->records++; if (npr->which != Z_NamePlusRecord_databaseRecord) { yaz_log(YLOG_WARN, "Unexpected record type, probably diagnostic"); @@ -742,7 +747,6 @@ static void do_presentResponse(IOCHAN i, Z_APDU *a) if (!*r->presentStatus && cl->state != Client_Error) { yaz_log(YLOG_DEBUG, "Good Present response"); - cl->records += *r->numberOfRecordsReturned; ingest_records(cl, r->records); cl->state = Client_Idle; } @@ -1549,7 +1553,8 @@ int main(int argc, char **argv) " -h [host:]port (REST protocol listener)\n" " -C cclconfig\n" " -s simpletargetfile\n" - " -p hostname[:portno] (HTTP proxy)\n"); + " -p hostname[:portno] (HTTP proxy)\n" + " -d (show internal records)\n"); exit(1); } }