Fixed bug #316: Numerical sort does not work for search.
[idzebra-moved-to-github.git] / index / zebraapi.c
index f2d73c6..53ed850 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: zebraapi.c,v 1.162 2005-04-26 08:11:22 adam Exp $
+/* $Id: zebraapi.c,v 1.164 2005-05-03 09:11:34 adam Exp $
    Copyright (C) 1995-2005
    Index Data ApS
 
@@ -145,6 +145,10 @@ ZebraHandle zebra_open (ZebraService zs)
 
     zebra_mutex_cond_unlock (&zs->session_lock);
 
+    zh->store_data_buf = 0;
+
+    zh->m_limit = zebra_limit_create(0, 0);
+
     return zh;
 }
 
@@ -533,6 +537,9 @@ ZEBRA_RES zebra_close (ZebraHandle zh)
     xfree(zh->reg_name);
     xfree(zh->user_perm);
     zh->service = 0; /* more likely to trigger an assert */
+
+    zebra_limit_destroy(zh->m_limit);
+
     xfree(zh->path_reg);
     xfree(zh);
     return ZEBRA_OK;
@@ -1928,7 +1935,7 @@ void zebra_set_resource(ZebraHandle zh, const char *name, const char *value)
     ASSERTZH;
     assert(name);
     assert(value);
-    yaz_log(log_level, "zebra_set_resource %s:%s",name,value);
+    yaz_log(log_level, "zebra_set_resource %s:%s", name, value);
     zh->errCode = 0;
     res_set(zh->res, name, value);
 }
@@ -1940,9 +1947,9 @@ const char *zebra_get_resource(ZebraHandle zh,
     ASSERTZH;
     assert(name);
     assert(defaultvalue);
-    v= res_get_def( zh->res, name, (char *)defaultvalue);
+    v = res_get_def (zh->res, name, (char *)defaultvalue);
     zh->errCode = 0;
-    yaz_log(log_level, "zebra_get_resource %s:%s",name,v);
+    yaz_log(log_level, "zebra_get_resource %s:%s", name, v);
     return v;
 }
 
@@ -2163,9 +2170,24 @@ int zebra_sort_by_specstr (ZebraHandle zh, ODR stream,
     return sort_status;
 }
 
+/* ---------------------------------------------------------------------------
+  Get BFS for Zebra system (to make alternative storage methods)
+*/
 struct BFiles_struct *zebra_get_bfs(ZebraHandle zh)
 {
     if (zh && zh->reg)
        return zh->reg->bfs;
     return 0;
 }
+
+
+/* ---------------------------------------------------------------------------
+  Set limit for search/scan
+*/
+ZEBRA_RES zebra_set_limit(ZebraHandle zh, int exclude_flag, zint *ids)
+{
+    ASSERTZH;
+    zebra_limit_destroy(zh->m_limit);
+    zh->m_limit = zebra_limit_create(exclude_flag, ids);
+    return ZEBRA_OK;
+}