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 */