X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=index%2Fzvrank.c;h=4322dda0c7c4576ba574cf8ce8dc35acc302a12d;hb=2e4e9c6def27f1e1463dcb6f205fab6a98054f38;hp=45ebee2c4be8e9cc8b4595b647a023710136a836;hpb=18bdfd28a9f4d38e2f81556396f51821c3d71088;p=idzebra-moved-to-github.git diff --git a/index/zvrank.c b/index/zvrank.c index 45ebee2..4322dda 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.8 2004-08-04 08:35:24 adam 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; } @@ -749,7 +757,7 @@ static void zv_add (void *rsi, int seqno, int i) { * score should be between 0 and 1000. If score cannot be obtained * -1 should be returned. */ -static int zv_calc (void *rsi, int sysno) +static int zv_calc (void *rsi, zint sysno) { int i, veclen; int score=0; @@ -768,7 +776,7 @@ static int zv_calc (void *rsi, int sysno) dscore=rs->sim_fct(rs->qdoc, rs->rdoc); } score = dscore * 1000; - yaz_log (LOG_LOG, "sysno=%d score=%d", sysno, score); + yaz_log (LOG_LOG, "sysno=" ZINT_FORMAT " score=%d", sysno, score); if (score > 1000) /* should not happen */ score = 1000; return score;