[tritonn-commit] [svn] [31] added system variable "senna_index_type".

アーカイブの一覧に戻る

svnno****@sourc***** svnno****@sourc*****
2007年 10月 19日 (金) 20:58:30 JST


Revision: 31
          http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=tritonn&view=rev&rev=31
Author:   mir
Date:     2007-10-19 20:58:29 +0900 (Fri, 19 Oct 2007)

Log Message:
-----------
added system variable "senna_index_type".

this new variables can be used to specify default index type of senna.
default value is NGRAM, so NGRAM is used if not specified.

for speciflying MECAB, use my.cnf like following:
[mysqld]
senna-index-type=mecab

or, use command-line option
shell> mysqld --senna-index-type=mecab

or, use SET command in mysql
mysql> SET GLOBAL senna_index_type=mecab

senna_index_type can be changed dynamically and will be reflected.

Modified Paths:
--------------
    mysql-5.0.45-tritonn-1.0.7/sql/mysql_priv.h
    mysql-5.0.45-tritonn-1.0.7/sql/mysqld.cc
    mysql-5.0.45-tritonn-1.0.7/sql/set_var.cc
    mysql-5.0.45-tritonn-1.0.7/sql/set_var.h
    mysql-5.0.45-tritonn-1.0.7/sql/sql_lex.h

Modified: mysql-5.0.45-tritonn-1.0.7/sql/mysql_priv.h
===================================================================
--- mysql-5.0.45-tritonn-1.0.7/sql/mysql_priv.h	2007-10-19 06:32:27 UTC (rev 30)
+++ mysql-5.0.45-tritonn-1.0.7/sql/mysql_priv.h	2007-10-19 11:58:29 UTC (rev 31)
@@ -1445,6 +1445,8 @@
 #ifdef ENABLE_SENNA
 extern my_bool opt_senna_log;
 extern uint senna_log_level_options;
+extern uint senna_index_type_options;
+extern int senna_default_flags;
 #endif
 
 #ifndef __WIN__

Modified: mysql-5.0.45-tritonn-1.0.7/sql/mysqld.cc
===================================================================
--- mysql-5.0.45-tritonn-1.0.7/sql/mysqld.cc	2007-10-19 06:32:27 UTC (rev 30)
+++ mysql-5.0.45-tritonn-1.0.7/sql/mysqld.cc	2007-10-19 11:58:29 UTC (rev 31)
@@ -340,6 +340,7 @@
 #ifdef ENABLE_SENNA
 static char *opt_senna_logname;
 static char *opt_senna_log_level;
+static char *opt_senna_index_type;
 #endif
 
 /* Global variables */
@@ -521,6 +522,8 @@
 my_bool opt_senna_log;
 char* senna_logname;
 uint senna_log_level_options;
+uint senna_index_type_options;
+int senna_default_flags;
 #endif
 
 /* Thread specific variables */
@@ -4871,6 +4874,7 @@
   OPT_SENNA_LOG,
   OPT_SENNA_LOG_LEVEL,
   OPT_SENNA_2IND,
+  OPT_SENNA_INDEX_TYPE,
 #endif
   OPT_PROFILING,
   OPT_INNODB_ROLLBACK_ON_TIMEOUT,
@@ -5540,6 +5544,9 @@
    (gptr*) &global_system_variables.senna_2ind, 
    (gptr*) &global_system_variables.senna_2ind, 
    0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+  {"senna-index-type", OPT_SENNA_INDEX_TYPE, "Senna default index type. A value can be NGRAM or MECAB. Default value is NGRAM.",
+   (gptr*) &opt_senna_index_type, (gptr*) &opt_senna_index_type, 0, GET_STR, REQUIRED_ARG,
+   0, 0, 0, 0, 0, 0},
   {"senna-log", OPT_SENNA_LOG, "Senna log file.",
    (gptr*) &opt_senna_logname, (gptr*) &opt_senna_logname, 0, GET_STR, OPT_ARG,
    0, 0, 0, 0, 0, 0},
@@ -6809,6 +6816,8 @@
 #endif
 
 #ifdef ENABLE_SENNA
+  senna_index_type_options = 0;
+  senna_default_flags = (SEN_INDEX_NORMALIZE | SEN_INDEX_NGRAM);
   opt_senna_log = 0;
   senna_log_level_options = senna_logger.max_level;
   global_system_variables.senna_2ind = 0;
@@ -7409,6 +7418,20 @@
     lower_case_table_names_used= 1;
     break;
 #ifdef ENABLE_SENNA
+  case OPT_SENNA_INDEX_TYPE:
+    int type;
+    if ((type=find_type(argument, &senna_index_type_typelib, 2)) <= 0)
+    {
+      fprintf(stderr, "Unkown senna_index_type type: %s\n",argument);
+      exit(1);
+    }
+    senna_index_type_options= (uint) type-1;
+    if (senna_index_type_options == 1) {
+      senna_default_flags = (SEN_INDEX_NORMALIZE);
+    } else {
+      senna_default_flags = (SEN_INDEX_NORMALIZE | SEN_INDEX_NGRAM);
+    }
+    break;
   case OPT_SENNA_LOG:
     opt_senna_log = 1;
     break;

Modified: mysql-5.0.45-tritonn-1.0.7/sql/set_var.cc
===================================================================
--- mysql-5.0.45-tritonn-1.0.7/sql/set_var.cc	2007-10-19 06:32:27 UTC (rev 30)
+++ mysql-5.0.45-tritonn-1.0.7/sql/set_var.cc	2007-10-19 11:58:29 UTC (rev 31)
@@ -92,6 +92,13 @@
   array_elements(senna_log_level_type_names)-1, "",
   senna_log_level_type_names, NULL
 };
+
+const char *senna_index_type_type_names[] = { "NGRAM", "MECAB", NullS};
+TYPELIB senna_index_type_typelib=
+{
+  array_elements(senna_index_type_type_names)-1, "",
+  senna_index_type_type_names, NULL
+};
 #endif
 
 static int  sys_check_ftb_syntax(THD *thd,  set_var *var);
@@ -470,6 +477,8 @@
 #endif
 
 #ifdef ENABLE_SENNA
+sys_var_enum            sys_senna_index_type("senna_index_type",&senna_index_type_options,
+					     &senna_index_type_typelib, fix_senna_index_type);
 sys_var_bool_ptr        sys_senna_log("senna_log", &opt_senna_log);
 sys_var_enum            sys_senna_log_level("senna_log_level",&senna_log_level_options,
 					    &senna_log_level_typelib, fix_senna_log_level);
@@ -758,6 +767,7 @@
   &sys_select_limit,
 #ifdef ENABLE_SENNA
   &sys_senna_2ind,
+  &sys_senna_index_type,
   &sys_senna_log_level,
 #endif
   &sys_server_id,
@@ -1079,6 +1089,7 @@
   {"secure_file_priv",        (char*) &sys_secure_file_priv,        SHOW_SYS},
 #ifdef ENABLE_SENNA
   {"senna_2ind",              (char*) &sys_senna_2ind,              SHOW_SYS},
+  {"senna_index_type",        (char*) &sys_senna_index_type,        SHOW_SYS},
   {"senna_log",               (char*) &opt_senna_log,               SHOW_MY_BOOL},
   {"senna_log_level",         (char*) &sys_senna_log_level,         SHOW_SYS},
 #endif
@@ -1404,6 +1415,17 @@
 }
 
 #ifdef ENABLE_SENNA
+extern void fix_senna_index_type(THD *thd, enum_var_type type)
+{
+  DBUG_ENTER("fix_senna_index_type");
+  if (senna_index_type_options == 0) {
+    senna_default_flags = (SEN_INDEX_NORMALIZE | SEN_INDEX_NGRAM);
+  } else {
+    senna_default_flags = (SEN_INDEX_NORMALIZE);
+  }
+  DBUG_VOID_RETURN;
+}
+
 extern void fix_senna_log_level(THD *thd, enum_var_type type)
 {
   DBUG_ENTER("fix_senna_log_level");

Modified: mysql-5.0.45-tritonn-1.0.7/sql/set_var.h
===================================================================
--- mysql-5.0.45-tritonn-1.0.7/sql/set_var.h	2007-10-19 06:32:27 UTC (rev 30)
+++ mysql-5.0.45-tritonn-1.0.7/sql/set_var.h	2007-10-19 11:58:29 UTC (rev 31)
@@ -33,6 +33,8 @@
 
 #ifdef ENABLE_SENNA
 extern TYPELIB senna_log_level_typelib;
+extern TYPELIB senna_index_type_typelib;
+extern int senna_default_flags;
 #endif
 
 typedef int (*sys_check_func)(THD *,  set_var *);
@@ -1017,6 +1019,7 @@
 #ifdef ENABLE_SENNA
 void fix_senna_log_level(THD *thd, enum_var_type type);
 void fix_senna_2ind(THD *thd, enum_var_type type);
+void fix_senna_index_type(THD *thd, enum_var_type type);
 #endif
 
 /* key_cache functions */

Modified: mysql-5.0.45-tritonn-1.0.7/sql/sql_lex.h
===================================================================
--- mysql-5.0.45-tritonn-1.0.7/sql/sql_lex.h	2007-10-19 06:32:27 UTC (rev 30)
+++ mysql-5.0.45-tritonn-1.0.7/sql/sql_lex.h	2007-10-19 11:58:29 UTC (rev 31)
@@ -1181,7 +1181,7 @@
   int senna_flags;
   int senna_initial_n_segments;
   inline void senna_clear() {
-    senna_flags=(SEN_INDEX_NORMALIZE | SEN_INDEX_NGRAM);
+    senna_flags= senna_default_flags;
     senna_initial_n_segments=0;
   }
 #endif /* ENABLE_SENNA */




Tritonn-commit メーリングリストの案内
アーカイブの一覧に戻る