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);