MySQL的全文搜索容量几乎不具有用户调节参数。假如你拥有一个 MySQL源分布,你就能对全文搜索性能行使更多控制,原因是一些变化需要源代码修改。请参见2.8节,“使用源码分发版安装MySQL”。
注意,为了更加有效,需要对全文搜索谨慎调节。实际上,在大多数情况下修改默认性能只能降低其性能。 除非你知道自己在做什么,否则不要改变 MySQL源。
下述的大多数全文变量必须在服务器启动时被设置。为了改变它们,还要重新启动服务器;在服务器正在运行期间,他们不会被改变。
一些变量的改变需要你重建表中的 FULLTEXT 索引。本章结尾部分给出了其有关操作说明。
· [mysqld]
· ft_min_word_len=3
然后重新启动服务器,重建你的 FULLTEXT索引。同时还要特别注意该表后面的说明中的关于myisamchk的注释。
停止字是自由形态的,换言之,你可使用任何诸如newline、 space或comma这样的非字母数字字符来分隔禁用词。 下划线字符(_) 和被视为单词的一部分的单引号 (')例外。停止字字符集为服务器默认字符集;见10.3.1节,“服务器字符集和校对”.
· #define GWS_IN_USE GWS_PROB
将该行改为:
#define GWS_IN_USE GWS_FREQ
然后重新编译 MySQL。此时不需要重建索引。注释:这样做你会严重的By 降低 MySQL为MATCH()函数提供合适的相关值得能力。假如你争得需要搜索这样的普通词,而使用IN BOOLEAN MODE代替的效果更好,因为它不遵循 50% 阈值。
假如你改变了影响索引的全文变量 (ft_min_word_len、 ft_max_word_len或ft_stopword_file),或假如你改变了禁用词文件本身,则你必须在改变和重新启动服务器后重建你的 FULLTEXT索引。这时,要重建索引, 只需进行一个 QUICK 修理操作:
mysql> REPAIR TABLE tbl_name QUICK;
注意,假如你使用 myisamchk 来执行一项修改表索引的操作 (诸如修理或分析 ), 则使用最小单词长度和最大单词长度以及停止字的默认全文参数值重建FULLTEXT索引,除非你已另外指定。这会导致问询失败。
发生这个问题的原因是只有服务器认识这些参数。它们的存储位置不在 MyISAM 索引文件中。若你已经修改了最小单词长度或最大单词长度或服务器中的停止字,为避免这个问题,为你对mysqld所使用的myisamchk 指定同样的 ft_min_word_len、 ft_max_word_len和ft_stopword_file值。例如,假如你已经将最小单词长度设置为 3, 则你可以这样修改一个带有myisamchk的表:
shell> myisamchk --recover --ft_min_word_len=3 tbl_name.MYI
为保证 myisamchk 及服务器对全文参数使用相同的值, 可将每一项都放在供选文件中的 [mysqld]和 [myisamchk] 部分:
[mysqld]
ft_min_word_len=3
[myisamchk]
ft_min_word_len=3
使用 REPAIR TABLE、 ANALYZE TABLE、OPTIMIZE TABLE或ALTER TABLE来代替使用 myisamchk 。这些语句通过服务器来执行,服务器知道使用哪个全文参数值更加合适。