X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fstemmer.c;h=f221799868875f7f1e9157bfdb875e55a1715e46;hp=e67d9b1c87cd78230e8a259a771b7bd37344e160;hb=c2831e6edcef94c16a2504ae4b25a15d35dd666d;hpb=5909f3400a7e326c0a64bb56bc0567488669534f diff --git a/src/stemmer.c b/src/stemmer.c index e67d9b1..f221799 100644 --- a/src/stemmer.c +++ b/src/stemmer.c @@ -1,13 +1,19 @@ +/* This file is part of the YAZ toolkit. + * Copyright (C) 1995-2012 Index Data + * See the file LICENSE for details. + */ +/** + * \file stemmer.c + * \brief Implements stemmer wrapper + */ #if HAVE_CONFIG_H -#include "config.h" +#include #endif #if YAZ_HAVE_ICU -#include - #include #include @@ -27,9 +33,7 @@ struct yaz_stemmer_t // Required for cloning. char *locale; char *rule; - union { - struct sb_stemmer *sb_stemmer; - }; + struct sb_stemmer *sb_stemmer; }; const char* yaz_stemmer_lookup_charenc(const char *charenc, const char *rule) { @@ -47,18 +51,18 @@ yaz_stemmer_p yaz_stemmer_snowball_create(const char *locale, const char *rule, yaz_stemmer_p yaz_stemmer; if (stemmer == 0) { *status = U_ILLEGAL_ARGUMENT_ERROR; - yaz_log(YLOG_FATAL, "yaz_stemmer: Failed to create snowball stemmer from locale %srule %s. Showball: charenc %s algorithm %s ", + yaz_log(YLOG_FATAL, "yaz_stemmer: Failed to create snowball stemmer from locale %srule %s. Showball: charenc %s algorithm %s ", locale, rule, charenc, algorithm); return 0; } - yaz_log(YLOG_DEBUG, "created snowball stemmer: algoritm %s charenc %s ", algorithm, charenc); + yaz_log(YLOG_DEBUG, "created snowball stemmer: algorithm %s charenc %s ", algorithm, charenc); yaz_stemmer = xmalloc(sizeof(*yaz_stemmer)); yaz_stemmer->implementation = yaz_snowball; - + yaz_stemmer->locale = xstrdup(locale); yaz_stemmer->rule = xstrdup(rule); yaz_stemmer->sb_stemmer = stemmer; - yaz_log(YLOG_DEBUG, "created snowball stemmer: algoritm %s charenc %s ", algorithm, charenc); + yaz_log(YLOG_DEBUG, "created snowball stemmer: algorithm %s charenc %s ", algorithm, charenc); return yaz_stemmer; } @@ -89,8 +93,12 @@ void yaz_stemmer_stem(yaz_stemmer_p stemmer, struct icu_buf_utf16 *dst, struct i icu_buf_utf16_copy(dst, src); } else { - const char *cstr = (const char *) sb_symbol; - icu_utf16_from_utf8_cstr(dst, cstr , status); + + const char *cstr2 = (const char *) sb_symbol; + icu_utf16_from_utf8_cstr(dst, cstr2 , status); +#if 0 + yaz_log(YLOG_DEBUG, "stemming %s to %s ", cstr, cstr2); +#endif } } icu_buf_utf8_destroy(utf8_buf); @@ -106,7 +114,7 @@ void yaz_stemmer_stem(yaz_stemmer_p stemmer, struct icu_buf_utf16 *dst, struct i } } -void yaz_stemmer_destroy(yaz_stemmer_p stemmer) +void yaz_stemmer_destroy(yaz_stemmer_p stemmer) { /* Handle no stemmer correctly */ if (stemmer == 0)