Mysql indexing pluging
[idzebra-moved-to-github.git] / index / zebraapi.c
index 65b9176..ec6a660 100644 (file)
@@ -420,7 +420,7 @@ struct zebra_register *zebra_register_open(ZebraService zs, const char *name,
     zebraRankInstall(reg, rank_similarity_class);
     zebraRankInstall(reg, rank_static_class);
 
-    compression_str = res_get_def(res, "compression_str", "none");
+    compression_str = res_get_def(res, "recordCompression", "none");
     if (!strcmp(compression_str, "none"))
        record_compression = REC_COMPRESS_NONE;
     else if (!strcmp(compression_str, "bzip2"))
@@ -433,6 +433,13 @@ struct zebra_register *zebra_register_open(ZebraService zs, const char *name,
         ret = ZEBRA_FAIL;
     }
 
+    if (!rec_check_compression_method(record_compression))
+    {
+        yaz_log(YLOG_FATAL, "unsupported recordCompression: %s",
+                compression_str);
+        ret = ZEBRA_FAIL;
+    }
+
     {
        const char *index_fname = res_get_def(res, "index", "default.idx");
        if (index_fname && *index_fname && strcmp(index_fname, "none"))
@@ -1992,16 +1999,18 @@ ZEBRA_RES zebra_end_transaction(ZebraHandle zh, ZebraTransactionStatus *status)
 
 ZEBRA_RES zebra_repository_update(ZebraHandle zh, const char *path)
 {
-    return zebra_repository_index(zh, path, action_update);
+    /* Both of these probably need to be thought out better */
+    return zebra_repository_index(zh, path, action_update, NULL);
 }
 
 ZEBRA_RES zebra_repository_delete(ZebraHandle zh, const char *path)
 {
-    return zebra_repository_index(zh, path, action_delete);
+    /* Both of these probably need to be thought out better */
+    return zebra_repository_index(zh, path, action_delete, NULL);
 }
 
 ZEBRA_RES zebra_repository_index(ZebraHandle zh, const char *path,
-                                 enum zebra_recctrl_action_t action)
+                                 enum zebra_recctrl_action_t action, char *useIndexDriver)
 {
     ASSERTZH;
     assert(path);
@@ -2015,10 +2024,20 @@ ZEBRA_RES zebra_repository_index(ZebraHandle zh, const char *path,
     else
         yaz_log(log_level, "update action=%d", (int) action);
 
-    if (zh->m_record_id && !strcmp(zh->m_record_id, "file"))
-        return zebra_update_file_match(zh, path);
+    if(!useIndexDriver)
+    {        
+           if (zh->m_record_id && !strcmp(zh->m_record_id, "file"))
+                return zebra_update_file_match(zh, path);
+           else
+                return zebra_update_from_path(zh, path, action);
+    }
     else
-        return zebra_update_from_path(zh, path, action);
+    {
+                /* This is used if we indicate we'll be indexing from the plugin
+                   rather than any of the file input systems */
+           zebra_update_from_driver(zh, path, action, useIndexDriver);
+    }
+
 }
 
 ZEBRA_RES zebra_repository_show(ZebraHandle zh, const char *path)