我有一个名为“ acts”的表,该表具有3个被索引在一起的列:
act_name, short_description, main_description
在表格中,一行有一个名为“红色暴动”的行为
当我执行以下搜索时,结果中会出现红色暴动:
SELECT * from acts where MATCH(act_name, short_description, main_description) AGAINST ('*r*' IN BOOLEAN MODE)
但是,如果我对此进行扩展并搜索,*re*则不会返回任何结果:
*re*
SELECT * from acts where MATCH(act_name, short_description, main_description) AGAINST ('*re*' IN BOOLEAN MODE)
这是为什么?有没有更好的方法在查询中使用通配符?
我尝试更改*为,%但这在任一查询上均未返回任何结果。
*
%
值“ re”是MATCH()搜索的停用词。
http://dev.mysql.com/doc/refman/5.5/en/fulltext- stopwords.html
[编辑]
的确,“ re”是一个停用词,但之所以不起作用,是因为全文搜索排除了源材料中长度小于系统变量ft_min_word_len的值(其默认值为4)的单词。
因此,搜索“ red *”将找到包含“ redder”和“ reddest”而不是“ red”的记录。
http://sqlfiddle.com/#!2/16d442/1