X-Git-Url: http://git.indexdata.com/?p=idzebra-moved-to-github.git;a=blobdiff_plain;f=index%2Fzebraapi.c;h=3d9d89f246a9de2427fd4fd41cc5af20b12d4776;hp=b99874f79958d76aaebf68746dcbb6333ac5c4af;hb=13bf0c380e98816595127291b64368dd9b8ca639;hpb=2e4e9c6def27f1e1463dcb6f205fab6a98054f38 diff --git a/index/zebraapi.c b/index/zebraapi.c index b99874f..3d9d89f 100644 --- a/index/zebraapi.c +++ b/index/zebraapi.c @@ -1,4 +1,4 @@ -/* $Id: zebraapi.c,v 1.121 2004-08-04 08:35:23 adam Exp $ +/* $Id: zebraapi.c,v 1.128 2004-09-03 14:59:49 heikki Exp $ Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004 Index Data Aps @@ -22,6 +22,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include #include +#include #ifdef WIN32 #include #include @@ -35,7 +36,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include #include "index.h" #include -#include "zebraapi.h" +#include /* simple asserts to validate the most essential input args */ #define ASSERTZH assert(zh && zh->service) @@ -261,7 +262,6 @@ struct zebra_register *zebra_register_open (ZebraService zs, const char *name, reg->sortIdx = 0; reg->isams = 0; reg->matchDict = 0; - reg->isam = 0; reg->isamc = 0; reg->isamb = 0; reg->zei = 0; @@ -308,15 +308,6 @@ struct zebra_register *zebra_register_open (ZebraService zs, const char *name, return 0; } } - if (res_get_match (res, "isam", "i", ISAM_DEFAULT)) - { - if (!(reg->isam = is_open (reg->bfs, FNAME_ISAM, key_compare, rw, - sizeof (struct it_key), res))) - { - logf (LOG_WARN, "is_open"); - return 0; - } - } if (res_get_match (res, "isam", "c", ISAM_DEFAULT)) { struct ISAMC_M_s isamc_m; @@ -412,8 +403,6 @@ static void zebra_register_close (ZebraService zs, struct zebra_register *reg) sortIdx_close (reg->sortIdx); if (reg->isams) isams_close (reg->isams); - if (reg->isam) - is_close (reg->isam); if (reg->isamc) isc_close (reg->isamc); if (reg->isamb) @@ -777,6 +766,8 @@ int zebra_select_databases (ZebraHandle zh, int num_bases, int zebra_search_RPN (ZebraHandle zh, ODR o, Z_RPNQuery *query, const char *setname, int *hits) { + const char *max; + zint maxhits; ASSERTZH; yaz_log(LOG_API,"zebra_search_rpn"); zh->errCode=0; @@ -792,8 +783,21 @@ int zebra_search_RPN (ZebraHandle zh, ODR o, zh->num_basenames, zh->basenames, setname); zebra_end_read (zh); - - *hits = zh->hits; + max = res_get (zh->res, "maxhits"); + if (max) + maxhits=atoi(max); + else { + int i=0; + maxhits=INT_MAX; + while (maxhits>100) { maxhits/=10; i++;} + while (i--) maxhits *= 10; + } + if (zh->hits > maxhits) { /* too large for yaz to handle */ + logf(LOG_LOG,"limiting hits to "ZINT_FORMAT, maxhits); + *hits=maxhits; /* round it down to two digits, to look like rounded */ + } + else + *hits = zh->hits; return 0; } @@ -1573,7 +1577,8 @@ int zebra_end_transaction (ZebraHandle zh, ZebraTransactionStatus *status) zebra_register_close (zh->service, zh->reg); zh->reg = 0; - yaz_log (LOG_LOG, "Records: %7d i/u/d %d/%d/%d", + yaz_log (LOG_LOG, "Records: "ZINT_FORMAT" i/u/d " + ZINT_FORMAT"/"ZINT_FORMAT"/"ZINT_FORMAT, zh->records_processed, zh->records_inserted, zh->records_updated, zh->records_deleted); @@ -1992,7 +1997,6 @@ int zebra_update_record (ZebraHandle zh, match, fname, force_update, 1); /* allow_update */ - yaz_log(LOG_LOG, "zebra_update_record returned res=%d", res); zebra_end_trans(zh); return res; } @@ -2055,7 +2059,6 @@ int zebra_search_PQF (ZebraHandle zh, const char *pqf_query, /* --------------------------------------------------------------------------- Sort - a simplified interface, with optional read locks. - FIXME - This is a horrible name, will conflict with half the applications */ int zebra_sort_by_specstr (ZebraHandle zh, ODR stream,