[Groonga-commit] groonga/groonga [master] suggest: keep v1 in learner

Back to archive index

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


Kouhei Sutou	2012-03-12 11:45:16 +0900 (Mon, 12 Mar 2012)

  New Revision: 6c41d00a5d61369fe90848d8b9bf15d5756ff4af

  Log:
    suggest: keep v1 in learner

  Modified files:
    plugins/suggest/suggest.c

  Modified: plugins/suggest/suggest.c (+22 -8)
===================================================================
--- plugins/suggest/suggest.c    2012-03-12 11:34:47 +0900 (b88ebfb)
+++ plugins/suggest/suggest.c    2012-03-12 11:45:16 +0900 (7e02cfd)
@@ -69,6 +69,8 @@ typedef struct {
   grn_obj *pairs_freq0;
   grn_obj *pairs_freq1;
   grn_obj *pairs_freq2;
+
+  grn_obj v1;
 } grn_suggest_learner;
 
 static int
@@ -650,6 +652,19 @@ learner_fin_columns(grn_ctx *ctx, grn_suggest_learner *learner)
 }
 
 static void
+learner_init_buffers(grn_ctx *ctx, grn_suggest_learner *learner)
+{
+  GRN_UINT32_INIT(&(learner->v1), 0);
+  GRN_UINT32_SET(ctx, &(learner->v1), 1);
+}
+
+static void
+learner_fin_buffers(grn_ctx *ctx, grn_suggest_learner *learner)
+{
+  grn_obj_unlink(ctx, &(learner->v1));
+}
+
+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,
@@ -737,7 +752,7 @@ learn_for_suggest(grn_ctx *ctx, grn_suggest_learner *learner,
 static void
 learner_learn(grn_ctx *ctx, grn_suggest_learner *learner)
 {
-  grn_obj v1, pre_events;
+  grn_obj pre_events;
   grn_obj *post_item = learner->post_item;
   grn_obj *post_time = learner->post_time;
   grn_id post_event_id = learner->post_event_id;
@@ -747,11 +762,10 @@ learner_learn(grn_ctx *ctx, grn_suggest_learner *learner)
   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);
-    GRN_UINT32_SET(ctx, &v1, 1);
+    learner_init_buffers(ctx, learner);
     GRN_RECORD_INIT(&pre_events, 0, grn_obj_id(ctx, learner->events));
     grn_obj_set_value(ctx, learner->items_freq, post_item_id,
-                      &v1, GRN_OBJ_INCR);
+                      &(learner->v1), GRN_OBJ_INCR);
     grn_obj_set_value(ctx, learner->items_last, post_item_id,
                       post_time, GRN_OBJ_SET);
     if (post_type_id) {
@@ -759,15 +773,15 @@ learner_learn(grn_ctx *ctx, grn_suggest_learner *learner)
       grn_id items_id;
       grn_obj pre_item;
       grn_obj_set_value(ctx, learner->items_freq2, post_item_id,
-                        &v1, GRN_OBJ_INCR);
+                        &(learner->v1), GRN_OBJ_INCR);
       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);
       learn_for_complete_and_correcnt(ctx, learner,
                                       post_item, &pre_events, &pre_item,
-                                      key_, post_time_value, &v1);
+                                      key_, post_time_value, &(learner->v1));
       learn_for_suggest(ctx, learner,
-                        post_item_id, key_, &pre_item, post_item, &v1);
+                        post_item_id, key_, &pre_item, post_item, &(learner->v1));
       GRN_OBJ_FIN(ctx, &pre_item);
       GRN_BULK_REWIND(&pre_events);
     }
@@ -775,7 +789,7 @@ learner_learn(grn_ctx *ctx, grn_suggest_learner *learner)
     grn_obj_set_value(ctx, learner->seqs_events, seq_id,
                       &pre_events, GRN_OBJ_APPEND);
     GRN_OBJ_FIN(ctx, &pre_events);
-    GRN_OBJ_FIN(ctx, &v1);
+    learner_fin_buffers(ctx, learner);
     learner_fin_columns(ctx, learner);
   }
 }




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