X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fzsets.c;h=8810246c71c8d7b2af230871bbc2cf343748d901;hb=d58c970cc76247dc3f7f263bf235daf6177695af;hp=19fb36acf49edf5de891df18b27c642e7e4cc659;hpb=cd405b18db3526be1855d7e14a598616237a4b2e;p=idzebra-moved-to-github.git diff --git a/index/zsets.c b/index/zsets.c index 19fb36a..8810246 100644 --- a/index/zsets.c +++ b/index/zsets.c @@ -1,4 +1,4 @@ -/* $Id: zsets.c,v 1.127 2007-12-01 21:34:10 adam Exp $ +/* $Id: zsets.c,v 1.128 2007-12-03 11:49:11 adam Exp $ Copyright (C) 1995-2007 Index Data ApS @@ -1403,6 +1403,32 @@ ZEBRA_RES zebra_result_recid_to_sysno(ZebraHandle zh, return zebra_recid_to_sysno(zh, basenames, num_bases, recid, sysnos, no_sysnos); } + +void zebra_count_set(ZebraHandle zh, RSET rset, zint *count, + zint approx_limit) +{ + zint psysno = 0; + struct it_key key; + RSFD rfd; + + yaz_log(YLOG_DEBUG, "count_set"); + + rset->hits_limit = approx_limit; + + *count = 0; + rfd = rset_open(rset, RSETF_READ); + while (rset_read(rfd, &key,0 /* never mind terms */)) + { + if (key.mem[0] != psysno) + { + psysno = key.mem[0]; + if (rfd->counted_items >= rset->hits_limit) + break; + } + } + rset_close(rfd); + *count = rset->hits_count; +} /*