-/* $Id: zvrank.c,v 1.6 2004-06-08 13:27:48 marc Exp $
+/* $Id: zvrank.c,v 1.10 2004-08-20 14:44:46 heikki Exp $
Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003
Index Data Aps
char *name;
int *id;
/**/
- int gocc;
+ zint gocc;
int locc;
double tf;
double idf;
static void idf_tfidf(void *rsi, void *dsi) {
RS rs=(RS)rsi;
DS ds=(DS)dsi;
- int num_docs, gocc;
+ zint num_docs, gocc;
int i, veclen;
double idf;
/* normal tfidf weight */
if (gocc==0)
idf=0.0;
else
- idf=blog(num_docs/gocc);
+ idf=blog((double) (num_docs/gocc));
ds->terms[i].idf=idf;
}
return;
static void idf_prob(void *rsi, void *dsi) {
RS rs=(RS)rsi;
DS ds=(DS)dsi;
- int num_docs, gocc;
+ zint num_docs, gocc;
int i, veclen;
double idf;
/* probabilistic formulation */
if (gocc==0)
idf=0.0;
else
- idf=blog((num_docs-gocc)/gocc);
+ idf=blog((double) ((num_docs-gocc)/gocc));
ds->terms[i].idf=idf;
}
return;
static void idf_squared(void *rsi, void *dsi) {
RS rs=(RS)rsi;
DS ds=(DS)dsi;
- int num_docs, gocc;
+ zint num_docs, gocc;
int i, veclen;
double idf;
/* idf ^ 2 */
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;
}
struct rs_info *rs=(struct rs_info *)xmalloc(sizeof(*rs));
struct rank_class_info *ci=(struct rank_class_info *)class_handle;
int i;
- int veclen, gocc;
+ int veclen;
+ zint gocc;
/**/
yaz_log(LOG_DEBUG, "zv_begin");
- veclen=rset->no_rset_terms; /* smaller vector here */
+ veclen= 0 ; /* rset->no_rset_terms;*/ /* smaller vector here */
+ /* FIXME - Now that we don't have term lists in rsets, what do */
+ /* we do here ??? */
zv_init(rs, ci->rscheme);
rs->veclen=veclen;
prn_rs(rs);
/* yaz_log(LOG_DEBUG, "zv_begin_init"); */
for (i = 0; i < rs->veclen; i++)
{
- gocc=rset->rset_terms[i]->nn;
+ gocc= 0; /* rset->rset_terms[i]->nn; */ /* FIXME ??? */
/* yaz_log(LOG_DEBUG, "zv_begin_init i=%d gocc=%d", i, gocc); */
rs->qdoc->terms[i].gocc=gocc;
rs->qdoc->terms[i].locc=1; /* assume query has no duplicate terms */
* 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;
(*rs->d_norm_fct)(rs, rs->rdoc);
dscore=rs->sim_fct(rs->qdoc, rs->rdoc);
}
- score = dscore * 1000;
- yaz_log (LOG_LOG, "sysno=%d score=%d", sysno, score);
+ score = (int) dscore * 1000;
+ yaz_log (LOG_LOG, "sysno=" ZINT_FORMAT " score=%d", sysno, score);
if (score > 1000) /* should not happen */
score = 1000;
- return score;
+ return (int) score;
}
/*