X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fzsets.c;h=efe14c78a54aa5c61f2ee6510b7a04daea275780;hb=73bedd5ba9152c9c107b502fae65723b551aff09;hp=e77e5fbe744a1c1cf4a1b6f68ed4a452f26fc257;hpb=c5bc0f71fe718b3c66d86b48b1b8669278e94c18;p=idzebra-moved-to-github.git diff --git a/index/zsets.c b/index/zsets.c index e77e5fb..efe14c7 100644 --- a/index/zsets.c +++ b/index/zsets.c @@ -1,4 +1,4 @@ -/* $Id: zsets.c,v 1.65 2004-10-21 12:43:09 heikki Exp $ +/* $Id: zsets.c,v 1.69 2004-10-26 15:32:11 heikki Exp $ Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004 Index Data Aps @@ -727,13 +727,15 @@ RSET resultSetRef (ZebraHandle zh, const char *resultSetId) return NULL; } -void resultSetRank (ZebraHandle zh, ZebraSet zebraSet, RSET rset) +void resultSetRank (ZebraHandle zh, ZebraSet zebraSet, RSET rset, NMEM nmem) { zint kno = 0; struct it_key key; RSFD rfd; TERMID termid; - int i; + TERMID *terms; + int numterms; + int i,n; ZebraRankClass rank_class; struct rank_control *rc; struct zset_sort_info *sort_info; @@ -746,6 +748,12 @@ void resultSetRank (ZebraHandle zh, ZebraSet zebraSet, RSET rset) sort_info = zebraSet->sort_info; sort_info->num_entries = 0; zebraSet->hits = 0; + n=0; + rset_getterms(rset,0,0,&n); + terms=malloc( sizeof(*terms)*n); + numterms=0; + rset_getterms(rset,terms,n,&numterms); + rfd = rset_open (rset, RSETF_READ); rank_class = zebraRankLookup (zh, rank_handler_name); @@ -761,14 +769,16 @@ void resultSetRank (ZebraHandle zh, ZebraSet zebraSet, RSET rset) zint psysno = key.mem[0]; int score; void *handle = - (*rc->begin) (zh->reg, rank_class->class_handle, rset); + (*rc->begin) (zh->reg, rank_class->class_handle, rset, nmem, + terms, numterms); (zebraSet->hits)++; esthits=atoi(res_get_def(zh->res,"estimatehits","0")); if (!esthits) est=-1; /* can not do */ do { - zint this_sys = key.mem[0]; + zint this_sys = key.mem[0]; /* FIXME - assumes scope==2 */ + zint seqno = key.mem[1]; /* FIXME - assumes scope==2 */ kno++; if (this_sys != psysno) { @@ -778,9 +788,7 @@ void resultSetRank (ZebraHandle zh, ZebraSet zebraSet, RSET rset) (zebraSet->hits)++; psysno = this_sys; } - /* FIXME - Ranking is broken, since rsets no longer have */ - /* term lists! */ - /* (*rc->add) (handle, this_sys, term_index); */ + (*rc->add) (handle, seqno, termid); if ( (est==-2) && (zebraSet->hits==esthits)) { /* time to estimate the hits */ @@ -810,20 +818,16 @@ void resultSetRank (ZebraHandle zh, ZebraSet zebraSet, RSET rset) (*rc->end) (zh->reg, handle); } rset_close (rfd); -/* - for (i = 0; i < rset->no_rset_terms; i++) + + + for (i = 0; i < numterms; i++) { - if (est>0) - rset->rset_terms[i]->count = - est=(zint)(rset->rset_terms[i]->count/ratio); - yaz_log (LOG_LOG, "term=\"%s\" nn=" ZINT_FORMAT + yaz_log (LOG_LOG, "term=\"%s\" " " type=%s count=" ZINT_FORMAT, - rset->rset_terms[i]->name, - rset->rset_terms[i]->nn, - rset->rset_terms[i]->flags, - rset->rset_terms[i]->count); + terms[i]->name, + terms[i]->flags, + rset_count(terms[i]->rset)); } -*/ yaz_log (LOG_DEBUG, ZINT_FORMAT " keys, "ZINT_FORMAT" distinct sysnos", kno, zebraSet->hits); }