[Groonga-commit] groonga/groonga [master] [suggest] remove 'prefix_' prefix

Back to archive index

null+****@clear***** null+****@clear*****
2012年 3月 6日 (火) 19:07:19 JST


Kouhei Sutou	2012-03-06 19:07:19 +0900 (Tue, 06 Mar 2012)

  New Revision: caa1fd3f4f742286025ecef416b0590d69624e10

  Log:
    [suggest] remove 'prefix_' prefix

  Modified files:
    plugins/suggest/suggest.c

  Modified: plugins/suggest/suggest.c (+29 -20)
===================================================================
--- plugins/suggest/suggest.c    2012-03-06 19:05:38 +0900 (12450a0)
+++ plugins/suggest/suggest.c    2012-03-06 19:07:19 +0900 (00163a4)
@@ -32,11 +32,10 @@
 #define SUGGEST  4
 
 typedef enum {
-  GRN_SUGGEST_PREFIX_SEARCH_YES,
-  GRN_SUGGEST_PREFIX_SEARCH_NO,
-  GRN_SUGGEST_PREFIX_SEARCH_AUTO
-} grn_suggest_prefix_search_mode;
-
+  GRN_SUGGEST_SEARCH_YES,
+  GRN_SUGGEST_SEARCH_NO,
+  GRN_SUGGEST_SEARCH_AUTO
+} grn_suggest_search_mode;
 
 static int
 grn_parse_suggest_types(const char *nptr, const char *end)
@@ -228,7 +227,7 @@ complete(grn_ctx *ctx, grn_obj *items, grn_obj *items_boost, grn_obj *col,
          grn_obj *query, grn_obj *sortby,
          grn_obj *output_columns, int offset, int limit,
          int frequency_threshold, double conditional_probability_threshold,
-         grn_suggest_prefix_search_mode prefix_search_mode)
+         grn_suggest_search_mode prefix_search_mode)
 {
   grn_obj *res;
   grn_obj *items_freq = grn_obj_column(ctx, items, CONST_STR_LEN("freq"));
@@ -273,8 +272,8 @@ complete(grn_ctx *ctx, grn_obj *items, grn_obj *items_boost, grn_obj *col,
       cooccurrence_search(ctx, items, items_boost, tid, res, COMPLETE,
                           frequency_threshold,
                           conditional_probability_threshold);
-      if (((prefix_search_mode == GRN_SUGGEST_PREFIX_SEARCH_YES) ||
-           (prefix_search_mode == GRN_SUGGEST_PREFIX_SEARCH_AUTO &&
+      if (((prefix_search_mode == GRN_SUGGEST_SEARCH_YES) ||
+           (prefix_search_mode == GRN_SUGGEST_SEARCH_AUTO &&
             !grn_table_size(ctx, res))) &&
           (cur = grn_table_cursor_open(ctx, items, norm->norm, norm->norm_blen,
                                        NULL, 0, 0, -1, GRN_CURSOR_PREFIX))) {
@@ -437,6 +436,26 @@ suggest(grn_ctx *ctx, grn_obj *items, grn_obj *items_boost,
   }
 }
 
+static grn_suggest_search_mode
+parse_search_mode(grn_ctx *ctx, grn_obj *mode_text)
+{
+  grn_suggest_search_mode mode;
+  int mode_length;
+
+  mode_length = GRN_TEXT_LEN(mode_text);
+  if (mode_length == 3 &&
+      strncasecmp("yes", GRN_TEXT_VALUE(mode_text), 3) == 0) {
+    mode = GRN_SUGGEST_SEARCH_YES;
+  } else if (mode_length == 2 &&
+             strncasecmp("no", GRN_TEXT_VALUE(mode_text), 2) == 0) {
+    mode = GRN_SUGGEST_SEARCH_NO;
+  } else {
+    mode = GRN_SUGGEST_SEARCH_AUTO;
+  }
+
+  return mode;
+}
+
 static grn_obj *
 command_suggest(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data)
 {
@@ -445,10 +464,9 @@ command_suggest(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_dat
   int offset = 0;
   int limit = DEFAULT_LIMIT;
   int frequency_threshold = DEFAULT_FREQUENCY_THRESHOLD;
-  int prefix_search_len;
   double conditional_probability_threshold =
     DEFAULT_CONDITIONAL_PROBABILITY_THRESHOLD;
-  grn_suggest_prefix_search_mode prefix_search_mode;
+  grn_suggest_search_mode prefix_search_mode;
 
   types = grn_parse_suggest_types(GRN_TEXT_VALUE(VAR(0)), GRN_BULK_CURR(VAR(0)));
   if (GRN_TEXT_LEN(VAR(6)) > 0) {
@@ -465,16 +483,7 @@ command_suggest(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_dat
     conditional_probability_threshold = strtod(GRN_TEXT_VALUE(VAR(9)), NULL);
   }
 
-  prefix_search_len = GRN_TEXT_LEN(VAR(10));
-  if (prefix_search_len == 3 &&
-      strncasecmp("yes", GRN_TEXT_VALUE(VAR(10)), 3) == 0) {
-    prefix_search_mode = GRN_SUGGEST_PREFIX_SEARCH_YES;
-  } else if (prefix_search_len == 2 &&
-             strncasecmp("no", GRN_TEXT_VALUE(VAR(10)), 2) == 0) {
-    prefix_search_mode = GRN_SUGGEST_PREFIX_SEARCH_NO;
-  } else {
-    prefix_search_mode = GRN_SUGGEST_PREFIX_SEARCH_AUTO;
-  }
+  prefix_search_mode = parse_search_mode(ctx, VAR(10));
 
   if ((items = grn_ctx_get(ctx, TEXT_VALUE_LEN(VAR(1))))) {
     if ((items_boost = grn_obj_column(ctx, items, CONST_STR_LEN("boost")))) {




Groonga-commit メーリングリストの案内
Back to archive index