X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=src%2Fsession.c;h=54b82daa1210b6ea64f4dcd7f820536b28e78bc3;hb=96707c992b975c2c9b500bd6a5075b5631e32e26;hp=207f47c8617b21d10218b3540a598b15c06e9d2b;hpb=de2db41f8e61eb6c255f574365edd6c6c81671ff;p=pazpar2-moved-to-github.git diff --git a/src/session.c b/src/session.c index 207f47c..54b82da 100644 --- a/src/session.c +++ b/src/session.c @@ -821,8 +821,7 @@ void session_init_databases(struct session *se) static struct session_database *load_session_database(struct session *se, char *id) { - struct database *db = new_database(id, se->session_nmem); - + struct database *db = new_database_inherit_settings(id, se->session_nmem, se->service->settings); session_init_databases_fun((void*) se, db); // New sdb is head of se->databases list @@ -1787,6 +1786,8 @@ static int ingest_to_cluster(struct client *cl, struct record_metadata *rec_md = 0; int md_field_id = -1; int sk_field_id = -1; + int rank = 0; + xmlChar *rank_str = 0; type = xmlGetProp(n, (xmlChar *) "type"); value = xmlNodeListGetString(xdoc, n->children, 1); @@ -1800,6 +1801,15 @@ static int ingest_to_cluster(struct client *cl, continue; ser_md = &service->metadata[md_field_id]; + + rank_str = xmlGetProp(n, (xmlChar *) "rank"); + if (rank_str) + { + rank = atoi((const char *) rank_str); + xmlFree(rank_str); + } + else + rank = ser_md->rank; if (ser_md->sortkey_offset >= 0) { @@ -1899,10 +1909,11 @@ static int ingest_to_cluster(struct client *cl, // ranking of _all_ fields enabled ... - if (ser_md->rank) + if (rank) + { relevance_countwords(se->relevance, cluster, - (char *) value, ser_md->rank, - ser_md->name); + (char *) value, rank, ser_md->name); + } // construct facets ... unless the client already has reported them if (ser_md->termlist && !client_has_facet(cl, (char *) type))