-/* $Id: rsprox.c,v 1.24 2005-01-17 01:16:37 adam Exp $
+/* $Id: rsprox.c,v 1.28 2005-05-03 09:11:36 adam Exp $
Copyright (C) 1995-2005
Index Data ApS
#include <string.h>
#include <assert.h>
-#include <zebrautl.h>
+#include <idzebra/util.h>
#include <rset.h>
#ifndef RSET_DEBUG
r_write,
};
-const struct rset_control *rset_kind_prox = &control;
-
struct rset_prox_info {
RSET *rset; /* array of 'child' rsets */
int rset_no; /* how many of them */
};
-RSET rsprox_create( NMEM nmem, const struct key_control *kcontrol, int scope,
- int rset_no, RSET *rset,
- int ordered, int exclusion,
- int relation, int distance)
+RSET rsprox_create(NMEM nmem, struct rset_key_control *kcontrol,
+ int scope,
+ int rset_no, RSET *rset,
+ int ordered, int exclusion,
+ int relation, int distance)
{
RSET rnew = rset_create_base(&control, nmem, kcontrol, scope,0);
struct rset_prox_info *info;
return rnew;
}
-
static void r_delete (RSET ct)
{
struct rset_prox_info *info = (struct rset_prox_info *) ct->priv;
rset_delete(info->rset[i]);
}
-
static RSFD r_open (RSET ct, int flag)
{
struct rset_prox_info *info = (struct rset_prox_info *) ct->priv;
rfd_delete_base(rfd);
}
-static int r_forward (RSFD rfd, void *buf, TERMID *term, const void *untilbuf)
+static int r_forward(RSFD rfd, void *buf, TERMID *term, const void *untilbuf)
{
struct rset_prox_info *info = (struct rset_prox_info *)(rfd->rset->priv);
- struct rset_prox_rfd *p=(struct rset_prox_rfd *)(rfd->priv);
- const struct key_control *kctrl = rfd->rset->keycontrol;
+ struct rset_prox_rfd *p = (struct rset_prox_rfd *)(rfd->priv);
+ const struct rset_key_control *kctrl = rfd->rset->keycontrol;
int cmp = 0;
int i;
for (i = 0; i<n; i++)
{
- int diff = (*kctrl->getseq)(p->buf[1]) - seqno[i];
+ zint diff = (*kctrl->getseq)(p->buf[1]) - seqno[i];
int excl = info->exclusion;
if (!info->ordered && diff < 0)
diff = -diff;
*total = 0;
} else {
r = scur/stot;
- *current = p->hits;
+ *current = (double) p->hits;
*total=*current/r ;
}
yaz_log(YLOG_DEBUG,"prox_pos: [%d] %0.1f/%0.1f= %0.4f ",