struct relevance *relevance_create(pp2_charset_t pct,
- NMEM nmem, const char **terms, int numrecs)
+ NMEM nmem, const char **terms)
{
struct relevance *res = nmem_malloc(nmem, sizeof(struct relevance));
const char **p;
int i;
float *idfvec = xmalloc(rel->vec_len * sizeof(float));
+ reclist_rewind(reclist);
// Calculate document frequency vector for each term.
for (i = 1; i < rel->vec_len; i++)
{
}
}
// Calculate relevance for each document
- for (i = 0; i < reclist_get_num_records(reclist); i++)
+
+ while (1)
{
int t;
- struct record_cluster *rec = reclist_get_cluster(reclist, i);
- float relevance;
- relevance = 0;
+ int relevance = 0;
+ struct record_cluster *rec = reclist_read_record(reclist);
+ if (!rec)
+ break;
for (t = 1; t < rel->vec_len; t++)
{
float termfreq;
if (!rec->term_frequency_vec[0])
break;
termfreq = (float) rec->term_frequency_vec[t] / rec->term_frequency_vec[0];
- relevance += termfreq * idfvec[t];
+ relevance += 100000 * (termfreq * idfvec[t] + 0.0000005);
}
- rec->relevance = (int) (relevance * 100000);
+ rec->relevance = relevance;
}
reclist_rewind(reclist);
xfree(idfvec);