4

我有以下 MySQL 查询:

SELECT title, description 
FROM some_table 
WHERE MATCH (title,description) AGAINST ('+denver (REGEXP "[[:<:]]colorado[s]*[[:>:]]")' IN BOOLEAN MODE);

这里的“regexp”寻找一个“完整的单词”colorado(有或没有结尾的“s”)。

我实际上只想选择那些具有 ("denver") AND ("colorado" 或 "colorados") 的行。但我不能为 REGEXP 加上“+”。我试过但得到 0 个结果,尽管表中有符合要求的行。

关于如何让“+”在使用 REGEXP 的情况下工作的任何想法?我在 PHP 脚本中构建它,其中“denver”和“colorado”是我用来构建 select 语句的变量值。

我的 PHP/MySQL 脚本看起来有点像这样:

SELECT title, description 
FROM some_table 
WHERE MATCH (title,description) AGAINST ('+$var1 (REGEXP "[[:<:]]$var2[s]*[[:>:]]")' IN BOOLEAN MODE);
4

1 回答 1

3

我认为在布尔模式下不可能将正则表达式和 MATCH ... 结合起来。您需要使用语法来编写布尔表达式。

尝试这样的事情:

SELECT title, description
FROM some_table
WHERE MATCH (title,description)
      AGAINST ('+denver +(colorado colorados)' IN BOOLEAN MODE);
于 2012-05-24T04:40:31.587 回答