X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fzebraapi.c;h=66e9f87afe259bccc951a3901ac991410ce16b7b;hb=bfe7ce5c9c47f3f4ad1ac76d4232b9807d5ee158;hp=b8f39363ae061b369cbd4de2c7fa6d502721c12c;hpb=291eda73f1f61c5985d272b2d85cf272de3f64c6;p=idzebra-moved-to-github.git diff --git a/index/zebraapi.c b/index/zebraapi.c index b8f3936..66e9f87 100644 --- a/index/zebraapi.c +++ b/index/zebraapi.c @@ -1,4 +1,4 @@ -/* $Id: zebraapi.c,v 1.259 2007-08-28 21:40:57 adam Exp $ +/* $Id: zebraapi.c,v 1.262 2007-10-31 16:56:14 adam Exp $ Copyright (C) 1995-2007 Index Data ApS @@ -381,6 +381,7 @@ struct zebra_register *zebra_register_open(ZebraService zs, const char *name, data1_set_tabroot (reg->dh, reg_path); reg->recTypes = recTypes_init (zs->record_classes, reg->dh); + reg->index_types = 0; reg->zebra_maps = zebra_maps_open(res, reg_path, profilePath); if (!reg->zebra_maps) @@ -419,7 +420,30 @@ struct zebra_register *zebra_register_open(ZebraService zs, const char *name, if (!strcmp (recordCompression, "bzip2")) record_compression = REC_COMPRESS_BZIP2; - if (1) + { + const char *index_types_fname = res_get(res, "indextypes"); + if (index_types_fname) + { + char tmp_full_name[1024]; + + if (!yaz_filepath_resolve(index_types_fname, + profilePath, + reg_path, + tmp_full_name)) + { + yaz_log(YLOG_WARN, "Could not find %s", index_types_fname); + ret = ZEBRA_FAIL; + } + else + { + reg->index_types = zebra_index_types_create( + tmp_full_name); + yaz_log(YLOG_LOG, "zebra_index_types_create returned %p", + reg->index_types); + } + } + + } { const char *index_fname = res_get_def(res, "index", "default.idx"); if (index_fname && *index_fname) @@ -580,6 +604,7 @@ static void zebra_register_close(ZebraService zs, struct zebra_register *reg) recTypes_destroy (reg->recTypes); zebra_maps_close (reg->zebra_maps); + zebra_index_types_destroy(reg->index_types); zebraRankDestroy (reg); bfs_destroy (reg->bfs); data1_destroy (reg->dh); @@ -1526,11 +1551,12 @@ ZEBRA_RES zebra_create_database (ZebraHandle zh, const char *db) return zebra_end_trans (zh); } -int zebra_string_norm(ZebraHandle zh, unsigned reg_id, +int zebra_string_norm(ZebraHandle zh, const char *index_type, const char *input_str, int input_len, char *output_str, int output_len) { WRBUF wrbuf; + zebra_map_t zm = zebra_map_get(zh->reg->zebra_maps, index_type); ASSERTZH; assert(input_str); assert(output_str); @@ -1538,8 +1564,7 @@ int zebra_string_norm(ZebraHandle zh, unsigned reg_id, if (!zh->reg->zebra_maps) return -1; - wrbuf = zebra_replace(zh->reg->zebra_maps, reg_id, "", - input_str, input_len); + wrbuf = zebra_replace(zm, "", input_str, input_len); if (!wrbuf) return -2; if (wrbuf_len(wrbuf) >= output_len)