X-Git-Url: http://lists.indexdata.dk/cgi-bin?a=blobdiff_plain;f=src%2Fpazpar2_config.c;h=052b457d5371708b789c9d49f6aebf34c55a83a2;hb=72d323b0b9aaaa1a5fb06afe8239c9a962b33bac;hp=ca16ea5bad41339793bd715162a74bcde5492a23;hpb=018fbd9f5f6729d8488ba808da700df30fbb9711;p=pazpar2-moved-to-github.git diff --git a/src/pazpar2_config.c b/src/pazpar2_config.c index ca16ea5..052b457 100644 --- a/src/pazpar2_config.c +++ b/src/pazpar2_config.c @@ -133,6 +133,10 @@ struct conf_service *service_init(struct conf_server *server, service->z3950_session_timeout = 180; service->z3950_operation_timeout = 30; service->rank_cluster = 1; + service->rank_debug = 0; + service->rank_follow = 0.0; + service->rank_lead = 0.0; + service->rank_length = 2; service->charsets = 0; @@ -620,17 +624,61 @@ static struct conf_service *service_create_static(struct conf_server *server, else if (!strcmp((const char *) n->name, "rank")) { char *rank_cluster = (char *) xmlGetProp(n, (xmlChar *) "cluster"); - - if (rank_cluster && !strcmp(rank_cluster, "yes")) - service->rank_cluster = 1; - else if (rank_cluster && !strcmp(rank_cluster, "no")) - service->rank_cluster = 0; - else + char *rank_debug = (char *) xmlGetProp(n, (xmlChar *) "debug"); + char *rank_follow = (char *) xmlGetProp(n, (xmlChar *) "follow"); + char *rank_lead = (char *) xmlGetProp(n, (xmlChar *) "lead"); + char *rank_length= (char *) xmlGetProp(n, (xmlChar *) "length"); + if (rank_cluster) { - yaz_log(YLOG_FATAL, "service: rank@cluster boolean"); - return 0; + if (!strcmp(rank_cluster, "yes")) + service->rank_cluster = 1; + else if (!strcmp(rank_cluster, "no")) + service->rank_cluster = 0; + else + { + yaz_log(YLOG_FATAL, "service: rank@cluster boolean"); + return 0; + } + } + if (rank_debug) + { + if (!strcmp(rank_debug, "yes")) + service->rank_debug = 1; + else if (!strcmp(rank_debug, "no")) + service->rank_debug = 0; + else + { + yaz_log(YLOG_FATAL, "service: rank@debug boolean"); + return 0; + } + } + if (rank_follow) + { + service->rank_follow = atof(rank_follow); + } + if (rank_lead) + { + service->rank_lead = atof(rank_lead); + } + if (rank_length) + { + if (!strcmp(rank_length, "linear")) + service->rank_length = 2; + else if (!strcmp(rank_length, "log")) + service->rank_length = 1; + else if (!strcmp(rank_length, "none")) + service->rank_length = 0; + else + { + yaz_log(YLOG_FATAL, "service: rank@length linear|log|none"); + return 0; + } } xmlFree(rank_cluster); + xmlFree(rank_debug); + xmlFree(rank_follow); + xmlFree(rank_lead); + xmlFree(rank_length); } else if (!strcmp((const char *) n->name, "sort-default")) { @@ -638,7 +686,8 @@ static struct conf_service *service_create_static(struct conf_server *server, if (default_sort && strcmp(default_sort, "")) { service->default_sort = nmem_strdup(service->nmem, default_sort); - yaz_log(YLOG_LOG, "service %d: default sort order configured to: %s", service_id, default_sort); + yaz_log(YLOG_LOG, "service %s: default sort order configured to: %s", + service_id ? service_id : "unnamed", default_sort); } else {