+ if (isam_r[i])
+ r = (*parms->cmp)(isam_buf[i], isam_tmp_buf);
+ else
+ r = 2;
+ if (r > 1 || r < -1)
+ wgt[i] = 0.0;
+ else
+ {
+ int tf = 0;
+ do
+ {
+ tf++;
+ isam_r[i] = is_readkey (isam_pt[i], isam_buf[i]);
+ } while (isam_r[i] &&
+ (*parms->cmp)(isam_buf[i], isam_tmp_buf) <= 1);
+ logf (LOG_DEBUG, "tf%d = %d", i, tf);
+ wgt[i] = 0.5+tf*0.5/max_tf[i];
+ length += wgt[i] * wgt[i];
+ }
+ }
+ /* calculate relevance value */
+ length = sqrt (length);
+ similarity = 0.0;
+ for (i = 0; i<parms->no_isam_positions; i++)
+ similarity += wgt[i]/length;
+ logf (LOG_LOG, " %f", similarity);
+ /* if value is in the top score, then save it - don't emit yet */
+ }