[Groonga-commit] groonga/groonga at c919306 [master] schema: support token filter options

Back to archive index
Kouhei Sutou null+****@clear*****
Tue Oct 30 15:58:18 JST 2018


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>


More information about the Groonga-commit mailing list
Back to archive index