小编典典

MySQL查询:使用通配符进行匹配

sql

我有一个名为“ 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*则不会返回任何结果:

SELECT * from acts where MATCH(act_name, short_description, main_description) AGAINST ('*re*' IN BOOLEAN MODE)

这是为什么?有没有更好的方法在查询中使用通配符?

我尝试更改*为,%但这在任一查询上均未返回任何结果。


阅读 165

收藏
2021-04-14

共1个答案

小编典典

值“ 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

2021-04-14