[Groonga-mysql-commit] mroonga/mroonga [fix-for-visual-studio] [wrapper][fulltext] support boolean mode.

Back to archive index

Kouhei Sutou null+****@clear*****
Thu Oct 4 10:25:39 JST 2012


Kouhei Sutou	2011-06-18 21:10:04 +0900 (Sat, 18 Jun 2011)

  New Revision: 1106d49189cbf2019c80737a907f1a7bc46d0d30
  https://github.com/mroonga/mroonga/commit/1106d49189cbf2019c80737a907f1a7bc46d0d30

  Log:
    [wrapper][fulltext] support boolean mode.

  Modified files:
    ha_mroonga.cc

  Modified: ha_mroonga.cc (+14 -5)
===================================================================
--- ha_mroonga.cc    2011-06-18 21:02:54 +0900 (dd4f5dd)
+++ ha_mroonga.cc    2011-06-18 21:10:04 +0900 (fe1c94b)
@@ -3838,12 +3838,21 @@ FT_INFO *ha_mroonga::wrapper_ft_init_ext(uint flags, uint key_nr, String *key)
   info->primary_key_length =
     table->key_info[table_share->primary_key].key_length;
 
-  // TODO: boolean mode support.
   grn_obj *index_column = grn_index_columns[key_nr];
-  grn_obj query;
-  GRN_TEXT_INIT(&query, GRN_OBJ_DO_SHALLOW_COPY);
-  GRN_TEXT_SET_REF(&query, key->ptr(), key->length());
-  grn_obj_search(info->ctx, index_column, &query, info->result, GRN_OP_OR, NULL);
+  if (flags & FT_BOOL) {
+    grn_query *query = grn_query_open(info->ctx, key->ptr(), key->length(),
+                                      GRN_OP_OR, MRN_MAX_EXPRS);
+    grn_obj_search(info->ctx, index_column, (grn_obj *)query, info->result,
+                   GRN_OP_OR, NULL);
+    grn_query_close(info->ctx, query);
+  } else {
+    grn_obj query;
+    GRN_TEXT_INIT(&query, GRN_OBJ_DO_SHALLOW_COPY);
+    GRN_TEXT_SET_REF(&query, key->ptr(), key->length());
+    grn_obj_search(info->ctx, index_column, &query, info->result,
+                   GRN_OP_OR, NULL);
+    grn_obj_unlink(ctx, &query);
+  }
 
   DBUG_RETURN((FT_INFO *)info);
 }
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-mysql-commit mailing list
Back to archive index