我有一个名为'acts'的表,它有3列被索引在一起:
act_name, short_description, main_description
在表格中,一行有一个名为'red riot'的行为
当我执行以下搜索时,结果中会出现红色骚乱:
SELECT * from acts where MATCH(act_name, short_description, main_description) AGAINST ('*r*' IN BOOLEAN MODE)
然而,如果我对此进行扩展,并搜索*re*
,则不会返回任何结果:
SELECT * from acts where MATCH(act_name, short_description, main_description) AGAINST ('*re*' IN BOOLEAN MODE)
为什么?有没有更好的方法在匹配查询时使用通配符?
我尝试将*
更改为%
,但这不会在任何查询中返回任何结果。
答案 0 :(得分:5)
值“re”是MATCH()搜索的停用词。
<德尔> http://dev.mysql.com/doc/refman/5.5/en/fulltext-stopwords.html 德尔>
[编辑]
“re”确实是一个禁用词,但实际原因是因为全文搜索排除了源材料中长度小于系统变量ft_min_word_len(其默认值为4)的值的单词)。
因此,搜索“red *”会找到包含“redder”和“reddest”但不包含“red”的记录。