[Groonga-commit] groonga/groonga [master] suggest: name return value of suggest_preparer()

Back to archive index

null+****@clear***** null+****@clear*****
2012年 3月 12日 (月) 11:27:10 JST


Kouhei Sutou	2012-03-12 11:27:10 +0900 (Mon, 12 Mar 2012)

  New Revision: d771020fa327979f138b7a5a296da1a6b1776eb1

  Log:
    suggest: name return value of suggest_preparer()

  Modified files:
    plugins/suggest/suggest.c

  Modified: plugins/suggest/suggest.c (+17 -14)
===================================================================
--- plugins/suggest/suggest.c    2012-03-12 11:02:07 +0900 (a2b6332)
+++ plugins/suggest/suggest.c    2012-03-12 11:27:10 +0900 (7d45d58)
@@ -45,6 +45,8 @@ typedef struct {
   grn_obj *post_time;
   grn_obj *pairs;
 
+  int learn_distance_in_seconds;
+
   grn_obj *seqs;
   grn_obj *seqs_events;
   grn_obj *events;
@@ -627,7 +629,7 @@ learner_fin_columns(grn_ctx *ctx, grn_suggest_learner *learner)
   grn_obj_unlink(ctx, learner->pairs_freq2);
 }
 
-static int
+static void
 learn_for_complete_and_correcnt(grn_ctx *ctx, grn_suggest_learner *learner,
                                 grn_obj *post_item,
                                 grn_obj *pre_events, grn_obj *pre_item,
@@ -638,7 +640,6 @@ learn_for_complete_and_correcnt(grn_ctx *ctx, grn_suggest_learner *learner,
   grn_obj pre_type, pre_time;
   grn_id *ep, *es;
   uint64_t key;
-  int r = 0;
 
   GRN_RECORD_INIT(&pre_type, 0, grn_obj_get_range(ctx, learner->events_type));
   GRN_TIME_INIT(&pre_time, 0);
@@ -655,7 +656,10 @@ learn_for_complete_and_correcnt(grn_ctx *ctx, grn_suggest_learner *learner,
     grn_obj_get_value(ctx, learner->events_time, *ep, &pre_time);
     grn_obj_get_value(ctx, learner->events_item, *ep, pre_item);
     if (GRN_TIME_VALUE(&pre_time) + 60 * GRN_TIME_USEC_PER_SEC < post_time_value) {
-      r = (int)((post_time_value - GRN_TIME_VALUE(&pre_time))/GRN_TIME_USEC_PER_SEC);
+      int64_t learn_distance_in_msec =
+        post_time_value - GRN_TIME_VALUE(&pre_time);
+      learner->learn_distance_in_seconds =
+        (int)(learn_distance_in_msec / GRN_TIME_USEC_PER_SEC);
       break;
     }
     key = key_ + GRN_RECORD_VALUE(pre_item);
@@ -676,8 +680,6 @@ learn_for_complete_and_correcnt(grn_ctx *ctx, grn_suggest_learner *learner,
   }
   GRN_OBJ_FIN(ctx, &pre_type);
   GRN_OBJ_FIN(ctx, &pre_time);
-
-  return r;
 }
 
 static void
@@ -712,10 +714,9 @@ learn_for_suggest(grn_ctx *ctx, grn_suggest_learner *learner,
   }
 }
 
-static int
+static void
 learner_learn(grn_ctx *ctx, grn_suggest_learner *learner)
 {
-  int r = 0;
   grn_obj v1, pre_events;
   grn_obj *post_event = learner->post_event;
   grn_obj *post_type = learner->post_type;
@@ -745,9 +746,9 @@ learner_learn(grn_ctx *ctx, grn_suggest_learner *learner)
       grn_obj_get_value(ctx, learner->seqs_events, seq_id, &pre_events);
       items_id = grn_obj_get_range(ctx, learner->events_item);
       GRN_RECORD_INIT(&pre_item, 0, items_id);
-      r = learn_for_complete_and_correcnt(ctx, learner,
-                                          post_item, &pre_events, &pre_item,
-                                          key_, post_time_value, &v1);
+      learn_for_complete_and_correcnt(ctx, learner,
+                                      post_item, &pre_events, &pre_item,
+                                      key_, post_time_value, &v1);
       learn_for_suggest(ctx, learner,
                         post_item_id, key_, &pre_item, post_item, &v1);
       GRN_OBJ_FIN(ctx, &pre_item);
@@ -760,13 +761,12 @@ learner_learn(grn_ctx *ctx, grn_suggest_learner *learner)
     GRN_OBJ_FIN(ctx, &v1);
     learner_fin_columns(ctx, learner);
   }
-  return r;
 }
 
 static grn_obj *
 func_suggest_preparer(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data)
 {
-  int r = 0;
+  int learn_distance_in_seconds = 0;
   grn_obj *obj;
   if (nargs == 6) {
     grn_obj *post_event = args[0];
@@ -778,9 +778,12 @@ func_suggest_preparer(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *us
     grn_suggest_learner learner;
     learner_init(ctx, &learner,
                  post_event, post_type, post_item, seq, post_time, pairs);
-    r = learner_learn(ctx, &learner);
+    learner_learn(ctx, &learner);
+    learn_distance_in_seconds = learner.learn_distance_in_seconds;
+  }
+  if ((obj = GRN_PROC_ALLOC(GRN_DB_UINT32, 0))) {
+    GRN_UINT32_SET(ctx, obj, learn_distance_in_seconds);
   }
-  if ((obj = GRN_PROC_ALLOC(GRN_DB_UINT32, 0))) { GRN_UINT32_SET(ctx, obj, r); }
   return obj;
 }
 




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