X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=src%2Fcharsets.c;h=d70c11d7730199b5dcc3a6b693ff796331e1fa0f;hb=311cf61ceacaa95dd68019f8345faf17b652a218;hp=f867b6f4a31aa98cf6b34a1b79e1b0393ee0f48e;hpb=9bc26001c80f8bccea8e0ec0ce8b83035bfba599;p=pazpar2-moved-to-github.git diff --git a/src/charsets.c b/src/charsets.c index f867b6f..d70c11d 100644 --- a/src/charsets.c +++ b/src/charsets.c @@ -1,5 +1,5 @@ /* 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 @@ -51,6 +51,7 @@ struct pp2_charset_s { #endif }; +static const char *pp2_relevance_token_null(pp2_relevance_token_t prt); static const char *pp2_relevance_token_a_to_z(pp2_relevance_token_t prt); static const char *pp2_get_sort_ascii(pp2_relevance_token_t prt); @@ -109,11 +110,18 @@ void pp2_charset_incref(pp2_charset_t pct) (pct->ref_count)++; } -pp2_charset_t pp2_charset_create(struct icu_chain * icu_chn) +pp2_charset_t pp2_charset_create_a_to_z(void) +{ + pp2_charset_t pct = pp2_charset_create(0); + pct->token_next_handler = pp2_relevance_token_a_to_z; + return pct; +} + +pp2_charset_t pp2_charset_create(struct icu_chain *icu_chn) { pp2_charset_t pct = xmalloc(sizeof(*pct)); - pct->token_next_handler = pp2_relevance_token_a_to_z; + pct->token_next_handler = pp2_relevance_token_null; pct->get_sort_handler = pp2_get_sort_ascii; pct->ref_count = 1; #if YAZ_HAVE_ICU @@ -176,8 +184,6 @@ void pp2_relevance_first(pp2_relevance_token_t prt, char *pout = firstword; char articles[] = "the den der die des an a "; // must end in space - while (*p && !isalnum(*(unsigned char *)p)) - p++; for (; *p && *p != ' ' && pout - firstword < (sizeof(firstword)-2); p++) *pout++ = tolower(*(unsigned char *)p); *pout++ = ' '; @@ -272,6 +278,16 @@ static const char *pp2_get_sort_ascii(pp2_relevance_token_t prt) } } +static const char *pp2_relevance_token_null(pp2_relevance_token_t prt) +{ + const char *cp = prt->cp; + + prt->last_cp = *cp ? cp : 0; + while (*cp) + cp++; + prt->cp = cp; + return prt->last_cp; +} #if YAZ_HAVE_ICU static const char *pp2_relevance_token_icu(pp2_relevance_token_t prt)