X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=src%2Ftermlists.c;h=54e5f67924112ac2f3fab5766e3ad03f374b78de;hb=9ca12b83de76e7b30b71e8b8c504deb21d8a09fd;hp=9741eb253103fb31373ce8c4f6a17dd4f3841dc4;hpb=2de4cab9b87f848767078447142668fc3c30e5c9;p=pazpar2-moved-to-github.git diff --git a/src/termlists.c b/src/termlists.c index 9741eb2..54e5f67 100644 --- a/src/termlists.c +++ b/src/termlists.c @@ -1,5 +1,5 @@ /* This file is part of Pazpar2. - Copyright (C) 2006-2011 Index Data + Copyright (C) 2006-2012 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 @@ -112,15 +112,11 @@ void termlist_insert(struct termlist *tl, const char *display_term, { unsigned int bucket; struct termlist_bucket **p; - char buf[256], *cp; + char buf[256]; if (strlen(norm_term) > 255) return; 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) { @@ -147,8 +143,12 @@ void termlist_insert(struct termlist *tl, const char *display_term, static int compare(const void *s1, const void *s2) { - struct termlist_score **p1 = (struct termlist_score**) s1, **p2 = (struct termlist_score **) s2; - return (*p2)->frequency - (*p1)->frequency; + struct termlist_score **p1 = (struct termlist_score **) s1; + struct termlist_score **p2 = (struct termlist_score **) s2; + int d = (*p2)->frequency - (*p1)->frequency; + if (d) + return d; + return strcmp((*p1)->display_term, (*p2)->display_term); } struct termlist_score **termlist_highscore(struct termlist *tl, int *len)