/* This file is part of Pazpar2.
- Copyright (C) 2006-2010 Index Data
+ Copyright (C) 2006-2011 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
}
}
-void termlist_insert(struct termlist *tl, const char *term)
+void termlist_insert(struct termlist *tl, const char *display_term,
+ const char *norm_term, int freq)
{
unsigned int bucket;
struct termlist_bucket **p;
char buf[256], *cp;
- if (strlen(term) > 255)
+ if (strlen(norm_term) > 255)
return;
- strcpy(buf, term);
+ strcpy(buf, norm_term);
/* chop right */
for (cp = buf + strlen(buf); cp != buf && strchr(",. -", cp[-1]); cp--)
cp[-1] = '\0';
bucket = jenkins_hash((unsigned char *)buf) % tl->hash_size;
for (p = &tl->hashtable[bucket]; *p; p = &(*p)->next)
{
- if (!strcmp(buf, (*p)->term.term))
+ if (!strcmp(buf, (*p)->term.norm_term))
{
- (*p)->term.frequency++;
+ (*p)->term.frequency += freq;
update_highscore(tl, &((*p)->term));
break;
}
{
struct termlist_bucket *new = nmem_malloc(tl->nmem,
sizeof(struct termlist_bucket));
- new->term.term = nmem_strdup(tl->nmem, buf);
- new->term.frequency = 1;
+ new->term.norm_term = nmem_strdup(tl->nmem, buf);
+ new->term.display_term = *display_term ?
+ nmem_strdup(tl->nmem, display_term) : new->term.norm_term;
+ new->term.frequency = freq;
new->next = 0;
*p = new;
update_highscore(tl, &new->term);