From e9dc180ae79cd3c877a5f6ab52a82b871ecfa5eb Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Fri, 22 Jan 2010 13:48:31 +0100 Subject: [PATCH] More reasonable approx hits for truncated searches --- rset/rsmultiandor.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/rset/rsmultiandor.c b/rset/rsmultiandor.c index 91669db..94534c9 100644 --- a/rset/rsmultiandor.c +++ b/rset/rsmultiandor.c @@ -613,11 +613,12 @@ static void r_pos_x(RSFD rfd, double *current, double *total, int and_op) (struct rfd_private *)(rfd->priv); double ratio = and_op ? 0.0 : 1.0; int i; + double sum_cur = 0.0; + double sum_tot = 0.0; for (i = 0; ino_children; i++){ double nratio, cur, tot; rset_pos(mrfd->items[i].fd, &cur, &tot); yaz_log(log_level, "r_pos: %d %0.1f %0.1f", i, cur,tot); - nratio = cur / tot; if (and_op) { @@ -626,10 +627,12 @@ static void r_pos_x(RSFD rfd, double *current, double *total, int and_op) } else { - if (nratio < ratio) - ratio = nratio; + sum_cur += cur; + sum_tot += tot; } } + if (!and_op) + ratio = sum_cur / sum_tot; if (ratio == 0.0 || ratio == 1.0) { /* nothing there */ *current = 0; *total = 0; -- 1.7.10.4