我正在使用 mysql 内置的布尔全文功能来搜索数据集。(匹配...反对语法)。
我遇到了一个问题,MySql 的默认停用词列表中的关键字没有返回任何结果。例如,“之前”、“之间”等。
(我认为)没有办法在运行时禁用 MySql 的停用词。而且因为我将我的网站托管在共享服务器 (DreamHost) 上,所以我没有禁用停用词重新编译 MySQL 的选项。
我想知道是否有人对解决上述问题的方法有任何建议?(无需升级到 VPS 或专用系统)
在此先感谢您的帮助,
特拉维斯
我正在使用 mysql 内置的布尔全文功能来搜索数据集。(匹配...反对语法)。
我遇到了一个问题,MySql 的默认停用词列表中的关键字没有返回任何结果。例如,“之前”、“之间”等。
(我认为)没有办法在运行时禁用 MySql 的停用词。而且因为我将我的网站托管在共享服务器 (DreamHost) 上,所以我没有禁用停用词重新编译 MySQL 的选项。
我想知道是否有人对解决上述问题的方法有任何建议?(无需升级到 VPS 或专用系统)
在此先感谢您的帮助,
特拉维斯
我遇到了这个问题,并在谷歌搜索时发现了这篇文章(一年多后),我也在一个共享主机上,并且在 mysql 中设置的停用词上拉了我的头发。我找到了一个对我来说非常有效的解决方法,希望它对其他人也有一些用处。
您还可以使用该REGEXP
命令来匹配表中的搜索词。
SELECT * FROM table WHERE column REGEXP 'searchterm'
我如何实现它是首先执行MATCH AGAINST
语法,如果 count = 0 我会这样做,REGEXP
而不是为我的用户提供更多结果。由于停用词和最小长度,总比没有结果好。
Forget it, the change of mysql full-text setting require a restart
details - http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html
note that Dynamic column is marked as NO for ft_stopword_file
However, is no harm to check with your hosting service provider...
If it do restart for you, you can use the following to repair your table full-text
mysql> REPAIR TABLE tbl_name QUICK;