/* This file is part of Pazpar2.
- Copyright (C) 2006-2008 Index Data
+ Copyright (C) 2006-2009 Index Data
Pazpar2 is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
*/
-#include <ctype.h>
-#include <math.h>
-#include <stdlib.h>
-
#if HAVE_CONFIG_H
-#include <cconfig.h>
+#include <config.h>
#endif
+#include <math.h>
+#include <stdlib.h>
+
#include "relevance.h"
#include "pazpar2.h"
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;
r->doc_frequency_vec[0]++;
}
-#ifdef GAGA
-#ifdef FLOAT_REL
-static int comp(const void *p1, const void *p2)
-{
- float res;
- struct record **r1 = (struct record **) p1;
- struct record **r2 = (struct record **) p2;
- res = (*r2)->relevance - (*r1)->relevance;
- if (res > 0)
- return 1;
- else if (res < 0)
- return -1;
- else
- return 0;
-}
-#else
-static int comp(const void *p1, const void *p2)
-{
- struct record_cluster **r1 = (struct record_cluster **) p1;
- struct record_cluster **r2 = (struct record_cluster **) p2;
- return (*r2)->relevance - (*r1)->relevance;
-}
-#endif
-#endif
-
// Prepare for a relevance-sorted read
void relevance_prepare_read(struct relevance *rel, struct reclist *reclist)
{
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->num_records; i++)
+
+ while (1)
{
int t;
- struct record_cluster *rec = reclist->flatlist[i];
- float relevance;
- relevance = 0;
+ float relevance = 0;
+ struct record_cluster *rec = reclist_read_record(reclist);
+ if (!rec)
+ break;
for (t = 1; t < rel->vec_len; t++)
{
float termfreq;
}
rec->relevance = (int) (relevance * 100000);
}
-#ifdef GAGA
- qsort(reclist->flatlist, reclist->num_records, sizeof(struct record*), comp);
-#endif
- reclist->pointer = 0;
+ reclist_rewind(reclist);
xfree(idfvec);
}
/*
* Local variables:
* c-basic-offset: 4
+ * c-file-style: "Stroustrup"
* indent-tabs-mode: nil
* End:
* vim: shiftwidth=4 tabstop=8 expandtab
*/
+