【发布时间】:2009-06-21 18:17:53
【问题描述】:
我在共享主机上有 MySQL。有没有办法在没有管理员权限的情况下更改ft_min_word_len 的值?
我找到了一种解决方法,其中每个少于 4 个字符的单词都用 _ 或其他字符进行补充,每个搜索的少于 4 个字符的关键字也是如此。
有没有更好的,或者更简洁的方法可以让全文搜索对短词起作用?
【问题讨论】:
我在共享主机上有 MySQL。有没有办法在没有管理员权限的情况下更改ft_min_word_len 的值?
我找到了一种解决方法,其中每个少于 4 个字符的单词都用 _ 或其他字符进行补充,每个搜索的少于 4 个字符的关键字也是如此。
有没有更好的,或者更简洁的方法可以让全文搜索对短词起作用?
【问题讨论】:
不幸的是,ft_min_word_len 是一个全局系统变量,不能动态设置:参见MySQL's online docs。更改它意味着重建每个 FULLTEXT 索引,顺便说一句,所以你可以看到他们为什么不希望非管理员搞砸它。
我担心您的解决方法(或完全等效的方法)是解决您遇到的问题的唯一方法。对不起! (但是,考虑到这一点的赞美!)。
【讨论】:
ft_min_word_len = 1,重启服务器,建立你的数据库和索引,完成后重置ft_min_word_len 并重新启动。然后你的数据库会留下你想要的索引吗?
ft_min_word_len?
我知道这是一篇旧帖子,但如果有人对服务器有 shell 访问权限(即使是非 root 用户)和 mysql 客户端工具,你也可以这样做
myisamchk --recover --ft_min_word_len=2 mytable.MYI
无论如何,您可能还必须安排它每天运行以包含新值。
【讨论】: