我正在使用mysql内置的布尔全文功能来搜索数据集。 (MATCH ... AGAINST语法)。
我遇到了一个问题,即MySql默认停用词列表中的关键字没有返回任何结果。例如,“之前”,“之间”等等。
有(我认为)无法在运行时禁用MySql的停用词。因为我在共享服务器(DreamHost)上托管我的网站,所以我没有选择在禁用停用词的情况下重新编译MySQL。
我想知道是否有人就如何处理上述问题有任何建议? (不升级到VPS或专用系统)
先谢谢你的帮助,
特拉维斯
答案 0 :(得分:3)
我遇到了这个问题并且在这篇文章中进行了谷歌搜索(一年之后)我也在共享主机上,并且正在将我的头发拉过mysql中设置的停止词。我找到了一个对我来说完美的解决方法,希望它对其他人也有用。
您还可以使用REGEXP
命令匹配表格中的搜索字词。
SELECT * FROM table WHERE column REGEXP 'searchterm'
我如何实现它是首先执行MATCH AGAINST
语法,如果count = 0,我执行REGEXP
而不是给我的用户更多结果。由于停用词和最小长度,完全没有结果。
答案 1 :(得分:0)
忘记了,更改mysql全文设置需要重启
详情 - http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html
请注意,动态列标记为ft_stopword_file
但是,与您的托管服务提供商核实是没有害处的......
如果它重新启动,您可以使用the following to repair your table full-text
mysql> REPAIR TABLE tbl_name QUICK;