null+****@clear*****
null+****@clear*****
2012年 3月 12日 (月) 14:22:16 JST
Kouhei Sutou 2012-03-12 14:22:16 +0900 (Mon, 12 Mar 2012)
New Revision: 49714f052db68b5376f096fddf9375282fb390cd
Log:
suggest: pass pre_item by learner
Modified files:
plugins/suggest/suggest.c
Modified: plugins/suggest/suggest.c (+5 -7)
===================================================================
--- plugins/suggest/suggest.c 2012-03-12 14:19:14 +0900 (7967914)
+++ plugins/suggest/suggest.c 2012-03-12 14:22:16 +0900 (2001df5)
@@ -715,13 +715,15 @@ learner_set_last_post_time(grn_ctx *ctx, grn_suggest_learner *learner)
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,
+ grn_obj *pre_events,
int64_t post_time_value)
{
+ grn_obj *pre_item;
grn_obj pre_type, pre_time;
grn_id *ep, *es;
uint64_t key;
+ pre_item = &(learner->pre_item);
GRN_RECORD_INIT(&pre_type, 0, grn_obj_get_range(ctx, learner->events_type));
GRN_TIME_INIT(&pre_time, 0);
ep = (grn_id *)GRN_BULK_CURR(pre_events);
@@ -766,7 +768,6 @@ learn_for_complete_and_correcnt(grn_ctx *ctx, grn_suggest_learner *learner,
static void
learn_for_suggest(grn_ctx *ctx, grn_suggest_learner *learner,
grn_id post_item_id,
- grn_obj *pre_item,
grn_obj *post_item)
{
char keybuf[GRN_TABLE_MAX_KEY_SIZE];
@@ -775,6 +776,7 @@ learn_for_suggest(grn_ctx *ctx, grn_suggest_learner *learner,
grn_token *token = grn_token_open(ctx, learner->items, keybuf, keylen, 1);
if (token) {
grn_id tid;
+ grn_obj *pre_item = &(learner->pre_item);
while ((tid = grn_token_next(ctx, token)) && tid != post_item_id) {
uint64_t key;
int added;
@@ -816,18 +818,14 @@ learner_learn(grn_ctx *ctx, grn_suggest_learner *learner)
learner_increment(ctx, learner, learner->items_freq, post_item_id);
learner_set_last_post_time(ctx, learner);
if (post_type_id) {
- grn_obj *pre_item;
-
learner_init_submit_learn(ctx, learner);
- pre_item = &(learner->pre_item);
learner_increment(ctx, learner, learner->items_freq2, post_item_id);
learn_for_complete_and_correcnt(ctx, learner,
post_item, &(learner->pre_events),
- pre_item,
post_time_value);
learn_for_suggest(ctx, learner,
- post_item_id, pre_item, post_item);
+ post_item_id, post_item);
learner_fin_submit_learn(ctx, learner);
}