Changed the index type to a string everywhere.
[idzebra-moved-to-github.git] / index / zebraapi.c
index 93c9ad9..66e9f87 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: zebraapi.c,v 1.257 2007-08-21 11:06:47 adam Exp $
+/* $Id: zebraapi.c,v 1.262 2007-10-31 16:56:14 adam Exp $
    Copyright (C) 1995-2007
    Index Data ApS
 
@@ -192,6 +192,8 @@ ZebraService zebra_start(const char *configName)
 ZebraService zebra_start_res(const char *configName, Res def_res, Res over_res)
 {
     Res res;
+    char version_str[16];
+    char system_str[80];
 
     zebra_flock_init();
 
@@ -201,7 +203,9 @@ ZebraService zebra_start_res(const char *configName, Res def_res, Res over_res)
         log_level_initialized = 1;
     }
     
-    yaz_log(YLOG_LOG, "zebra_start %s %s", ZEBRAVER,
+    zebra_get_version(version_str, system_str);
+
+    yaz_log(YLOG_LOG, "zebra_start %s %s", version_str,
            configName ? configName : "");
 
     if ((res = res_open(def_res, over_res)))
@@ -377,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)
@@ -415,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)
@@ -576,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);
@@ -1288,8 +1317,7 @@ int zebra_deleteResultSet(ZebraHandle zh, int function,
 {
     int i, status;
     ASSERTZH;
-    assert(statuses);
-    yaz_log(log_level, "zebra_deleteResultSet n=%d",num_setnames);
+    yaz_log(log_level, "zebra_deleteResultSet n=%d", num_setnames);
 
     if (zebra_begin_read(zh))
        return Z_DeleteStatus_systemProblemAtTarget;
@@ -1523,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);
@@ -1535,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)