X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=index%2Fzvrank.c;h=8c1a034848de16a53a13069aa065c43895c072e9;hb=3a2124aa85eea0583c7528bcc6f79a5fa1632a40;hp=45ebee2c4be8e9cc8b4595b647a023710136a836;hpb=18bdfd28a9f4d38e2f81556396f51821c3d71088;p=idzebra-moved-to-github.git diff --git a/index/zvrank.c b/index/zvrank.c index 45ebee2..8c1a034 100644 --- a/index/zvrank.c +++ b/index/zvrank.c @@ -1,4 +1,4 @@ -/* $Id: zvrank.c,v 1.5 2003-05-20 09:43:46 adam Exp $ +/* $Id: zvrank.c,v 1.7.2.1 2004-11-04 12:49:36 heikki Exp $ Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003 Index Data Aps @@ -20,6 +20,13 @@ 02111-1307, USA. */ +/* +Zvrank: an experimental ranking algorithm. See doc/zvrank.txt and +source in index/zvrank.c. Enable this by using rank: zvrank in zebra.cfg. +Contributed by Johannes Leveling +*/ + /* Zebra Vector Space Model RANKing ** ** six (seven) letter identifier for weighting scheme @@ -653,9 +660,10 @@ static void *zv_create (ZebraHandle zh) { struct rank_class_info *ci = (struct rank_class_info *) xmalloc (sizeof(*ci)); yaz_log(LOG_DEBUG, "zv_create"); - wscheme=res_get(res, "zvrank.weighting-scheme"); - for (i=0; (i < strlen(wscheme)) && (i < 8); i++) + wscheme=res_get_def(res, "zvrank.weighting-scheme", ""); + for (i=0; wscheme[i] && i < 8; i++) ci->rscheme[i]=wscheme[i]; + ci->rscheme[i] = '\0'; return ci; } @@ -771,6 +779,10 @@ static int zv_calc (void *rsi, int sysno) yaz_log (LOG_LOG, "sysno=%d score=%d", sysno, score); if (score > 1000) /* should not happen */ score = 1000; + /* reset counts for the next record */ + for (i = 0; i < rs->veclen; i++) + rs->rdoc->terms[i].locc=0; + return score; }