The configuration, fileverboselimit, has a value of 1000. When
[idzebra-moved-to-github.git] / index / zebraapi.c
index 6ecea62..7e7bb79 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: zebraapi.c,v 1.242 2007-01-15 15:10:17 adam Exp $
+/* $Id: zebraapi.c,v 1.248 2007-02-06 09:34:56 adam Exp $
    Copyright (C) 1995-2007
    Index Data ApS
 
@@ -143,6 +143,9 @@ ZebraHandle zebra_open(ZebraService zs, Res res)
     zh->m_staticrank = 0;
     zh->m_segment_indexing = 0;
 
+    zh->break_handler_func = 0;
+    zh->break_handler_data = 0;
+
     default_encoding = res_get_def(zh->session_res, "encoding", "ISO-8859-1");
 
     zh->iconv_to_utf8 =
@@ -1015,8 +1018,25 @@ ZEBRA_RES zebra_set_approx_limit(ZebraHandle zh, zint approx_limit)
     return ZEBRA_OK;
 }
 
-ZEBRA_RES zebra_search_RPN(ZebraHandle zh, ODR o, Z_RPNQuery *query,
-                          const char *setname, zint *hits)
+void zebra_set_partial_result(ZebraHandle zh)
+{
+    zh->partial_result = 1;
+}
+
+
+ZEBRA_RES zebra_set_break_handler(ZebraHandle zh,
+                                  int (*f)(void *client_data),
+                                  void *client_data)
+{
+    zh->break_handler_func = f;
+    zh->break_handler_data = client_data;
+    return ZEBRA_OK;
+}
+
+ZEBRA_RES zebra_search_RPN_x(ZebraHandle zh, ODR o, Z_RPNQuery *query,
+                             const char *setname, zint *hits,
+                             int *estimated_hit_count,
+                             int *partial_resultset)
 {
     ZEBRA_RES r;
     
@@ -1027,19 +1047,31 @@ ZEBRA_RES zebra_search_RPN(ZebraHandle zh, ODR o, Z_RPNQuery *query,
     assert(hits);
     assert(setname);
     yaz_log(log_level, "zebra_search_rpn");
-    zh->hits = 0;
-    *hits = 0;
+
+    zh->partial_result = 0;
 
     if (zebra_begin_read(zh) == ZEBRA_FAIL)
        return ZEBRA_FAIL;
 
     r = resultSetAddRPN(zh, odr_extract_mem(o), query, 
-                       zh->num_basenames, zh->basenames, setname);
+                       zh->num_basenames, zh->basenames, setname,
+                        hits, estimated_hit_count);
+
+    *partial_resultset = zh->partial_result;
     zebra_end_read(zh);
-    *hits = zh->hits;
     return r;
 }
 
+ZEBRA_RES zebra_search_RPN(ZebraHandle zh, ODR o, Z_RPNQuery *query,
+                           const char *setname, zint *hits)
+{
+    int estimated_hit_count;
+    int partial_resultset;
+    return zebra_search_RPN_x(zh, o, query, setname, hits,
+                              &estimated_hit_count,
+                              &partial_resultset);
+}
+
 ZEBRA_RES zebra_records_retrieve(ZebraHandle zh, ODR stream,
                                 const char *setname,
                                 Z_RecordComposition *comp,
@@ -1684,7 +1716,7 @@ static void read_res_for_transaction(ZebraHandle zh)
     v = res_get_prefix(zh->res, "openRW", group, "1");
     zh->m_flag_rw = atoi(v);
 
-    v = res_get_prefix(zh->res, "fileVerboseLimit", group, "100000");
+    v = res_get_prefix(zh->res, "fileVerboseLimit", group, "1000");
     zh->m_file_verbose_limit = atoi(v);
 }
 
@@ -1743,6 +1775,7 @@ ZEBRA_RES zebra_begin_trans(ZebraHandle zh, int rw)
         zh->records_updated = 0;
         zh->records_deleted = 0;
         zh->records_processed = 0;
+        zh->records_skipped = 0;
         
 #if HAVE_SYS_TIMES_H
         times (&zh->tms1);
@@ -2387,6 +2420,7 @@ ZEBRA_RES zebra_search_PQF(ZebraHandle zh, const char *pqf_query,
     Z_RPNQuery *query;
     ODR odr;
 
+
     ZEBRA_CHECK_HANDLE(zh);
 
     odr = odr_createmem(ODR_ENCODE);