Kouhei Sutou 2018-10-30 15:58:18 +0900 (Tue, 30 Oct 2018) Revision: c919306f66cbb96b044386cb98eaf72fbd0588e6 https://github.com/groonga/groonga/commit/c919306f66cbb96b044386cb98eaf72fbd0588e6 Message: schema: support token filter options Added files: test/command/suite/schema/tables/token_filters_with_options.test Copied files: test/command/suite/schema/tables/token_filters_with_options.expected (from test/command/suite/schema/tables/token_filters.expected) Modified files: lib/proc/proc_schema.c test/command/suite/schema/tables/token_filters.expected Modified: lib/proc/proc_schema.c (+20 -26) =================================================================== --- lib/proc/proc_schema.c 2018-10-30 15:30:22 +0900 (48661f6b8) +++ lib/proc/proc_schema.c 2018-10-30 15:58:18 +0900 (526d8959c) @@ -1,6 +1,7 @@ /* -*- c-basic-offset: 2 -*- */ /* Copyright(C) 2015-2018 Brazil + Copyright(C) 2018 Kouhei Sutou <kou****@clear*****> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -644,7 +645,7 @@ command_schema_table_output_token_filters(grn_ctx *ctx, grn_obj *table) token_filter = GRN_PTR_VALUE_AT(&token_filters, i); - grn_ctx_output_map_open(ctx, "token_filter", 2); + grn_ctx_output_map_open(ctx, "token_filter", 3); grn_ctx_output_cstr(ctx, "id"); command_schema_output_id(ctx, token_filter); @@ -652,6 +653,16 @@ command_schema_table_output_token_filters(grn_ctx *ctx, grn_obj *table) grn_ctx_output_cstr(ctx, "name"); command_schema_output_name(ctx, token_filter); + grn_ctx_output_cstr(ctx, "options"); + { + grn_obj options; + + GRN_VOID_INIT(&options); + grn_table_get_token_filter_options(ctx, table, i, &options); + command_schema_table_output_options(ctx, &options); + GRN_OBJ_FIN(ctx, &options); + } + grn_ctx_output_map_close(ctx); } grn_ctx_output_array_close(ctx); @@ -756,32 +767,15 @@ command_schema_table_command_collect_arguments(grn_ctx *ctx, if (table->header.type != GRN_TABLE_NO_KEY) { grn_obj token_filters; - int n; - - GRN_PTR_INIT(&token_filters, GRN_OBJ_VECTOR, GRN_DB_OBJECT); + GRN_PTR_INIT(&token_filters, GRN_OBJ_VECTOR, GRN_ID_NIL); grn_obj_get_info(ctx, table, GRN_INFO_TOKEN_FILTERS, &token_filters); - n = GRN_BULK_VSIZE(&token_filters) / sizeof(grn_obj *); - if (n > 0) { - grn_obj token_filter_names; - int i; - - GRN_TEXT_INIT(&token_filter_names, 0); - for (i = 0; i < n; i++) { - grn_obj *token_filter; - char name[GRN_TABLE_MAX_KEY_SIZE]; - int name_size; - - token_filter = GRN_PTR_VALUE_AT(&token_filters, i); - name_size = grn_obj_name(ctx, token_filter, - name, GRN_TABLE_MAX_KEY_SIZE); - if (i > 0) { - GRN_TEXT_PUTC(ctx, &token_filter_names, ','); - } - GRN_TEXT_PUT(ctx, &token_filter_names, name, name_size); - } - GRN_TEXT_PUTC(ctx, &token_filter_names, '\0'); - ADD("token_filters", GRN_TEXT_VALUE(&token_filter_names)); - GRN_OBJ_FIN(ctx, &token_filter_names); + if (grn_vector_size(ctx, &token_filters) > 0) { + grn_obj sub_output; + GRN_TEXT_INIT(&sub_output, 0); + grn_table_get_token_filters_string(ctx, table, &sub_output); + GRN_TEXT_PUTC(ctx, &sub_output, '\0'); + ADD("token_filters", GRN_TEXT_VALUE(&sub_output)); + GRN_OBJ_FIN(ctx, &sub_output); } GRN_OBJ_FIN(ctx, &token_filters); } Modified: test/command/suite/schema/tables/token_filters.expected (+2 -1) =================================================================== --- test/command/suite/schema/tables/token_filters.expected 2018-10-30 15:30:22 +0900 (f63a2b7b0) +++ test/command/suite/schema/tables/token_filters.expected 2018-10-30 15:58:18 +0900 (19d2e1484) @@ -238,7 +238,8 @@ schema "token_filters": [ { "id": 256, - "name": "TokenFilterStopWord" + "name": "TokenFilterStopWord", + "options": null } ], "indexes": [ Copied: test/command/suite/schema/tables/token_filters_with_options.expected (+8 -4) 94% =================================================================== --- test/command/suite/schema/tables/token_filters.expected 2018-10-30 15:30:22 +0900 (f63a2b7b0) +++ test/command/suite/schema/tables/token_filters_with_options.expected 2018-10-30 15:58:18 +0900 (d70d95796) @@ -1,6 +1,6 @@ plugin_register token_filters/stop_word [[0,0.0,0.0],true] -table_create Terms TABLE_PAT_KEY ShortText --default_tokenizer TokenBigram --token_filters TokenFilterStopWord +table_create Terms TABLE_PAT_KEY ShortText --default_tokenizer TokenBigram --token_filters 'TokenFilterStopWord("column", "ignore")' [[0,0.0,0.0],true] schema [ @@ -238,7 +238,11 @@ schema "token_filters": [ { "id": 256, - "name": "TokenFilterStopWord" + "name": "TokenFilterStopWord", + "options": [ + "column", + "ignore" + ] } ], "indexes": [ @@ -251,9 +255,9 @@ schema "flags": "TABLE_PAT_KEY", "key_type": "ShortText", "default_tokenizer": "TokenBigram", - "token_filters": "TokenFilterStopWord" + "token_filters": "TokenFilterStopWord(\"column\", \"ignore\")" }, - "command_line": "table_create --name Terms --flags TABLE_PAT_KEY --key_type ShortText --default_tokenizer TokenBigram --token_filters TokenFilterStopWord" + "command_line": "table_create --name Terms --flags TABLE_PAT_KEY --key_type ShortText --default_tokenizer TokenBigram --token_filters \"TokenFilterStopWord(\\\"column\\\", \\\"ignore\\\")\"" }, "columns": { } Added: test/command/suite/schema/tables/token_filters_with_options.test (+7 -0) 100644 =================================================================== --- /dev/null +++ test/command/suite/schema/tables/token_filters_with_options.test 2018-10-30 15:58:18 +0900 (cb6866179) @@ -0,0 +1,7 @@ +plugin_register token_filters/stop_word + +table_create Terms TABLE_PAT_KEY ShortText \ + --default_tokenizer TokenBigram \ + --token_filters 'TokenFilterStopWord("column", "ignore")' + +schema -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.osdn.me/mailman/archives/groonga-commit/attachments/20181030/586e7f4b/attachment-0001.html>