[Groonga-commit] groonga/groonga [master] suggest: get input value in learner

Back to archive index

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


Kouhei Sutou	2012-03-12 11:34:47 +0900 (Mon, 12 Mar 2012)

  New Revision: 76dd501124ee12dafb98c166f74a412ecad14c15

  Log:
    suggest: get input value in learner

  Modified files:
    plugins/suggest/suggest.c

  Modified: plugins/suggest/suggest.c (+23 -8)
===================================================================
--- plugins/suggest/suggest.c    2012-03-12 11:28:01 +0900 (d7bca42)
+++ plugins/suggest/suggest.c    2012-03-12 11:34:47 +0900 (b88ebfb)
@@ -47,6 +47,12 @@ typedef struct {
 
   int learn_distance_in_seconds;
 
+  grn_id post_event_id;
+  grn_id post_type_id;
+  grn_id post_item_id;
+  grn_id seq_id;
+  int64_t post_time_value;
+
   grn_obj *seqs;
   grn_obj *seqs_events;
   grn_obj *events;
@@ -560,6 +566,16 @@ command_suggest(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_dat
 }
 
 static void
+learner_init_values(grn_ctx *ctx, grn_suggest_learner *learner)
+{
+  learner->post_event_id = GRN_RECORD_VALUE(learner->post_event);
+  learner->post_type_id = GRN_RECORD_VALUE(learner->post_type);
+  learner->post_item_id = GRN_RECORD_VALUE(learner->post_item);
+  learner->seq_id = GRN_RECORD_VALUE(learner->seq);
+  learner->post_time_value = GRN_TIME_VALUE(learner->post_time);
+}
+
+static void
 learner_init(grn_ctx *ctx, grn_suggest_learner *learner,
              grn_obj *post_event, grn_obj *post_type, grn_obj *post_item,
              grn_obj *seq, grn_obj *post_time, grn_obj *pairs)
@@ -572,6 +588,8 @@ learner_init(grn_ctx *ctx, grn_suggest_learner *learner,
   learner->pairs = pairs;
 
   learner->learn_distance_in_seconds = 0;
+
+  learner_init_values(ctx, learner);
 }
 
 static void
@@ -720,16 +738,13 @@ static void
 learner_learn(grn_ctx *ctx, grn_suggest_learner *learner)
 {
   grn_obj v1, pre_events;
-  grn_obj *post_event = learner->post_event;
-  grn_obj *post_type = learner->post_type;
   grn_obj *post_item = learner->post_item;
-  grn_obj *seq = learner->seq;
   grn_obj *post_time = learner->post_time;
-  grn_id post_event_id = GRN_RECORD_VALUE(post_event);
-  grn_id post_type_id = GRN_RECORD_VALUE(post_type);
-  grn_id post_item_id = GRN_RECORD_VALUE(post_item);
-  grn_id seq_id = GRN_RECORD_VALUE(seq);
-  int64_t post_time_value = GRN_TIME_VALUE(post_time);
+  grn_id post_event_id = learner->post_event_id;
+  grn_id post_type_id = learner->post_type_id;
+  grn_id post_item_id = learner->post_item_id;
+  grn_id seq_id = learner->seq_id;
+  int64_t post_time_value = learner->post_time_value;
   if (post_event_id && post_item_id && seq_id) {
     learner_init_columns(ctx, learner);
     GRN_UINT32_INIT(&v1, 0);




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