X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=src%2Ftermlists.c;h=892e6d9a5229bf6dd3c95f1fcd28f47a885a78b5;hb=ad57e922f6418a6f7741eceacbb61c3e9da662a8;hp=52c22d2b4e7cf486f5d9e057843863419dba3684;hpb=e107b0011a295ccc61502d6e5ea79d9125a3fbb4;p=pazpar2-moved-to-github.git diff --git a/src/termlists.c b/src/termlists.c index 52c22d2..892e6d9 100644 --- a/src/termlists.c +++ b/src/termlists.c @@ -1,5 +1,5 @@ /* 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 @@ -17,16 +17,16 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#if HAVE_CONFIG_H +#include +#endif + #include #include -#include #include -#if HAVE_CONFIG_H -#include -#endif - #include "termlists.h" +#include "jenkins_hash.h" // Discussion: // As terms are found in incoming records, they are added to (or updated in) a @@ -53,24 +53,6 @@ struct termlist NMEM nmem; }; - -// Jenkins one-at-a-time hash (from wikipedia) -static unsigned int hash(const unsigned char *key) -{ - unsigned int hash = 0; - - while (*key) - { - hash += *(key++); - hash += (hash << 10); - hash ^= (hash >> 6); - } - hash += (hash << 3); - hash ^= (hash >> 11); - hash += (hash << 15); - return hash; -} - struct termlist *termlist_create(NMEM nmem, int numterms, int highscore_size) { int hashsize = 1; @@ -149,7 +131,7 @@ void termlist_insert(struct termlist *tl, const char *term) for (cp = buf + strlen(buf); cp != buf && strchr(",. -", cp[-1]); cp--) cp[-1] = '\0'; - bucket = hash((unsigned char *)buf) & tl->hashmask; + bucket = jenkins_hash((unsigned char *)buf) & tl->hashmask; for (p = &tl->hashtable[bucket]; *p; p = &(*p)->next) { if (!strcmp(buf, (*p)->term.term)) @@ -187,7 +169,9 @@ struct termlist_score **termlist_highscore(struct termlist *tl, int *len) /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab */ +