Mysql查询:匹配使用通配符

时间:2013-11-04 21:21:13

标签: mysql sql

我有一个名为'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)

为什么?有没有更好的方法在匹配查询时使用通配符?

我尝试将*更改为%,但这不会在任何查询中返回任何结果。

1 个答案:

答案 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”的记录。

http://sqlfiddle.com/#!2/16d442/1