case Metadata_sortkey_relevance:
wrbuf_puts(w, "relevance");
break;
+ case Metadata_sortkey_relevance_h:
+ wrbuf_puts(w, "relevance_h");
+ break;
case Metadata_sortkey_numeric:
wrbuf_puts(w, "numeric");
break;
#ifndef PAZPAR2_CONFIG_H
#define PAZPAR2_CONFIG_H
-#include "normalize_cache.h"
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+#include "normalize_cache.h"
#include <yaz/nmem.h>
#include <yaz/mutex.h>
#include <yaz/ccl.h>
enum conf_sortkey_type {
Metadata_sortkey_relevance,
+ Metadata_sortkey_relevance_h, // Heikki's ranking
Metadata_sortkey_numeric, // Standard numerical sorting
Metadata_sortkey_skiparticle, // Skip leading article when sorting
Metadata_sortkey_string, // Flat string
{
type = Metadata_sortkey_relevance;
}
+ else if (!strcmp(parm, "relevance_h"))
+ {
+ type = Metadata_sortkey_relevance_h;
+ }
else if (!strcmp(parm, "position"))
{
type = Metadata_sortkey_position;
case Metadata_sortkey_relevance:
res = r2->relevance_score - r1->relevance_score;
break;
+ case Metadata_sortkey_relevance_h:
+ res = r2->relevance_score - r1->relevance_score;
+ break;
case Metadata_sortkey_string:
s1 = ut1 ? ut1->text.sort : "";
s2 = ut2 ? ut2->text.sort : "";
#include <math.h>
#include <stdlib.h>
+#include "pazpar2_config.h"
#include "relevance.h"
#include "session.h"
}
// Prepare for a relevance-sorted read
-void relevance_prepare_read(struct relevance *rel, struct reclist *reclist)
+void relevance_prepare_read(struct relevance *rel, struct reclist *reclist,
+ enum conf_sortkey_type type)
{
int i;
float *idfvec = xmalloc(rel->vec_len * sizeof(float));
{
wrbuf_printf(w, "score = relevance(%d);\n", relevance);
}
+ if (0 && type == Metadata_sortkey_relevance_h)
+ relevance *= 2;
rec->relevance_score = relevance;
}
reclist_leave(reclist);
void relevance_donerecord(struct relevance *r, struct record_cluster *cluster);
-void relevance_prepare_read(struct relevance *rel, struct reclist *rec);
+void relevance_prepare_read(struct relevance *rel, struct reclist *rec,
+ enum conf_sortkey_type type);
#endif
if (se->relevance)
{
for (spp = sp; spp; spp = spp->next)
- if (spp->type == Metadata_sortkey_relevance)
+ if (spp->type == Metadata_sortkey_relevance
+ || spp->type == Metadata_sortkey_relevance_h)
{
- relevance_prepare_read(se->relevance, se->reclist);
+ relevance_prepare_read(se->relevance, se->reclist, spp->type);
break;
}
for (l = se->clients_active; l; l = l->next) {
2 http://localhost:9763/search.pz2?session=1&command=show&block=1&sort=title:1p
2 http://localhost:9763/search.pz2?session=1&command=show&block=1&sort=date:0p
http://localhost:9763/search.pz2?session=1&command=service
-http://localhost:9763/search.pz2?session=1&command=show&sort=relevance
+http://localhost:9763/search.pz2?session=1&command=show&sort=relevance_h
http://localhost:9763/search.pz2?session=1&command=record&id=content%3A+title+coal+sample+bank+author+medium+book
http://localhost:9763/search.pz2?session=1&command=show&block=1&sort=title:1
-http://localhost:9763/search.pz2?session=1&command=record&id=content%3A+title+coal+sample+bank+author+medium+book
\ No newline at end of file
+http://localhost:9763/search.pz2?session=1&command=record&id=content%3A+title+coal+sample+bank+author+medium+book