Skip to content

Commit

Permalink
Add grn_db_fin_mecab_tokenizer to finalyze mecab tokenizer
Browse files Browse the repository at this point in the history
  • Loading branch information
Kentoku committed May 29, 2020
1 parent 0692002 commit 6e6a422
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 0 deletions.
3 changes: 3 additions & 0 deletions storage/mroonga/vendor/groonga/lib/db.c
Original file line number Diff line number Diff line change
Expand Up @@ -445,6 +445,9 @@ grn_db_close(grn_ctx *ctx, grn_obj *db)

ctx_used_db = ctx->impl && ctx->impl->db == db;
if (ctx_used_db) {
#ifdef GRN_WITH_MECAB
grn_db_fin_mecab_tokenizer(ctx);
#endif
grn_ctx_loader_clear(ctx);
if (ctx->impl->parser) {
grn_expr_parser_close(ctx);
Expand Down
30 changes: 30 additions & 0 deletions storage/mroonga/vendor/groonga/lib/tokenizers.c
Original file line number Diff line number Diff line change
Expand Up @@ -797,6 +797,36 @@ grn_db_init_mecab_tokenizer(grn_ctx *ctx)
}
}

void
grn_db_fin_mecab_tokenizer(grn_ctx *ctx)
{
switch (GRN_CTX_GET_ENCODING(ctx)) {
case GRN_ENC_EUC_JP :
case GRN_ENC_UTF8 :
case GRN_ENC_SJIS :
#if defined(GRN_EMBEDDED) && defined(GRN_WITH_MECAB)
{
GRN_PLUGIN_DECLARE_FUNCTIONS(tokenizers_mecab);
GRN_PLUGIN_IMPL_NAME_TAGGED(fin, tokenizers_mecab)(ctx);
}
#else /* defined(GRN_EMBEDDED) && defined(GRN_WITH_MECAB) */
{
const char *mecab_plugin_name = "tokenizers/mecab";
char *path;
path = grn_plugin_find_path(ctx, mecab_plugin_name);
if (path) {
GRN_FREE(path);
grn_plugin_unregister(ctx, mecab_plugin_name);
}
}
#endif /* defined(GRN_EMBEDDED) && defined(GRN_WITH_MECAB) */
break;
default :
break;
}
return;
}

#define DEF_TOKENIZER(name, init, next, fin, vars)\
(grn_proc_create(ctx, (name), (sizeof(name) - 1),\
GRN_PROC_TOKENIZER, (init), (next), (fin), 3, (vars)))
Expand Down

0 comments on commit 6e6a422

Please sign in to comment.