X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fpazpar2_config.c;h=2d747cabbe90a49464f1bd1461379c7c3c9a88d3;hb=fb19bc317370b4f4b508088b034b4c2d19257042;hp=8068b13cbc141860009dfa2dd580ace49b66e553;hpb=4fa5ef817d20e5b626751b8b12934453bb438cfd;p=pazpar2-moved-to-github.git diff --git a/src/pazpar2_config.c b/src/pazpar2_config.c index 8068b13..2d747ca 100644 --- a/src/pazpar2_config.c +++ b/src/pazpar2_config.c @@ -207,7 +207,7 @@ static struct conf_sortkey *conf_service_add_sortkey( struct conf_service *service, int field_id, const char *name, - enum conf_sortkey_type type) + enum conf_metadata_type type) { struct conf_sortkey *sk = 0; NMEM nmem = service->nmem; @@ -392,6 +392,8 @@ static int parse_metadata(struct conf_service *service, xmlNode *n, type = Metadata_type_year; else if (!strcmp((const char *) xml_type, "date")) type = Metadata_type_date; + else if (!strcmp((const char *) xml_type, "float")) + type = Metadata_type_float; else { yaz_log(YLOG_FATAL, @@ -433,7 +435,7 @@ static int parse_metadata(struct conf_service *service, xmlNode *n, else { yaz_log(YLOG_FATAL, - "Unknown value for medadata/setting: %s", xml_setting); + "Unknown value for metadata/setting: %s", xml_setting); return -1; } } @@ -441,17 +443,29 @@ static int parse_metadata(struct conf_service *service, xmlNode *n, // add a sortkey if so specified if (xml_sortkey && strcmp((const char *) xml_sortkey, "no")) { - enum conf_sortkey_type sk_type; + enum conf_metadata_type sk_type = type; if (merge == Metadata_merge_no) { yaz_log(YLOG_FATAL, "Can't specify sortkey on a non-merged field"); return -1; } + if (!strcmp((const char *) xml_sortkey, "yes")) + ; if (!strcmp((const char *) xml_sortkey, "numeric")) - sk_type = Metadata_sortkey_numeric; + ; else if (!strcmp((const char *) xml_sortkey, "skiparticle")) - sk_type = Metadata_sortkey_skiparticle; + { + if (sk_type == Metadata_type_generic) + sk_type = Metadata_type_skiparticle; + else + { + yaz_log(YLOG_FATAL, + "skiparticle only supported for type=generic: %s", + xml_type); + return -1; + } + } else { yaz_log(YLOG_FATAL, @@ -1014,21 +1028,18 @@ static void info_service_metadata(struct conf_service *service, WRBUF w) if (md->sortkey_offset > 0) { wrbuf_puts(w, " sortkey=\""); switch (service->sortkeys[md->sortkey_offset].type) { - case Metadata_sortkey_relevance: + case Metadata_type_relevance: wrbuf_puts(w, "relevance"); break; - case Metadata_sortkey_numeric: - wrbuf_puts(w, "numeric"); - break; - case Metadata_sortkey_skiparticle: + case Metadata_type_skiparticle: wrbuf_puts(w, "skiparticle"); break; - case Metadata_sortkey_string: - wrbuf_puts(w, "string"); - break; - case Metadata_sortkey_position: + case Metadata_type_position: wrbuf_puts(w, "position"); break; + default: + wrbuf_puts(w, "yes"); + break; } wrbuf_puts(w, "\""); } @@ -1042,6 +1053,9 @@ static void info_service_metadata(struct conf_service *service, WRBUF w) case Metadata_type_date: wrbuf_puts(w, " type=\"date\""); break; + case Metadata_type_float: + wrbuf_puts(w, " type=\"float\""); + break; } switch (md->merge) {