[Groonga-commit] groonga/groonga at 9bc0207 [master] tokenize: don't use overspec code

Back to archive index

Kouhei Sutou null+****@clear*****
Thu Aug 14 20:20:35 JST 2014


Kouhei Sutou	2014-08-14 20:20:35 +0900 (Thu, 14 Aug 2014)

  New Revision: 9bc0207d0ac28f3bc0920a300697785f17d17d19
  https://github.com/groonga/groonga/commit/9bc0207d0ac28f3bc0920a300697785f17d17d19

  Message:
    tokenize: don't use overspec code

  Modified files:
    lib/proc.c

  Modified: lib/proc.c (+20 -9)
===================================================================
--- lib/proc.c    2014-08-14 20:17:29 +0900 (863bfbd)
+++ lib/proc.c    2014-08-14 20:20:35 +0900 (31314af)
@@ -3351,15 +3351,26 @@ proc_tokenize(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data)
       output_tokens(ctx, &add_tokens, lexicon);
       GRN_OBJ_FIN(ctx, &add_tokens);
     } else if (!memcmp(GRN_TEXT_VALUE(mode_name), "GET", 3)) {
-      grn_obj add_tokens;
-      grn_obj get_tokens;
-      GRN_VALUE_FIX_SIZE_INIT(&add_tokens, GRN_OBJ_VECTOR, GRN_ID_NIL);
-      GRN_VALUE_FIX_SIZE_INIT(&get_tokens, GRN_OBJ_VECTOR, GRN_ID_NIL);
-      tokenize(ctx, lexicon, string, GRN_TOKEN_ADD, flags, &add_tokens);
-      tokenize(ctx, lexicon, string, GRN_TOKEN_GET, flags, &get_tokens);
-      output_tokens(ctx, &get_tokens, lexicon);
-      GRN_OBJ_FIN(ctx, &add_tokens);
-      GRN_OBJ_FIN(ctx, &get_tokens);
+      {
+        grn_token *token;
+        token = grn_token_open(ctx, (grn_obj *)lexicon,
+                               GRN_TEXT_VALUE(string), GRN_TEXT_LEN(string),
+                               GRN_TOKEN_ADD, flags);
+        if (token) {
+          while (token->status == GRN_TOKEN_DOING) {
+            grn_token_next(ctx, token);
+          }
+          grn_token_close(ctx, token);
+        }
+      }
+
+      {
+        grn_obj tokens;
+        GRN_VALUE_FIX_SIZE_INIT(&tokens, GRN_OBJ_VECTOR, GRN_ID_NIL);
+        tokenize(ctx, lexicon, string, GRN_TOKEN_GET, flags, &tokens);
+        output_tokens(ctx, &tokens, lexicon);
+        GRN_OBJ_FIN(ctx, &tokens);
+      }
     } else {
       ERR(GRN_INVALID_ARGUMENT, "[tokenize] invalid mode: <%.*s>",
           (int)GRN_TEXT_LEN(mode_name), GRN_TEXT_VALUE(mode_name));
-------------- next part --------------
HTML����������������������������...
Download 



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