Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL:在全文搜索中查找多个单词-仅精确匹配_Sql_Mysql_Full Text Search - Fatal编程技术网

MySQL:在全文搜索中查找多个单词-仅精确匹配

MySQL:在全文搜索中查找多个单词-仅精确匹配,sql,mysql,full-text-search,Sql,Mysql,Full Text Search,我正在写一些代码来自动标记一些文章 我有一个标签数组和一个文章表。我运行以下查询以检查与标记匹配的标题: SELECT headline FROM `news` WHERE MATCH(headline) AGAINST ("+Green +Day" IN BOOLEAN MODE) 这会发现所有的文章标题中都有“绿色日”这个词——如果没有第一个+,我会得到只包含“绿色”一词的文章 这并不完美,有些标签会导致不准确的结果-例如一个名为Die的标签!死亡死(不问)返回每个标题,其中包含

我正在写一些代码来自动标记一些文章

我有一个标签数组和一个文章表。我运行以下查询以检查与标记匹配的标题:

SELECT headline 
  FROM `news` 
 WHERE MATCH(headline) AGAINST ("+Green +Day" IN BOOLEAN MODE)
这会发现所有的文章标题中都有“绿色日”这个词——如果没有第一个+,我会得到只包含“绿色”一词的文章

这并不完美,有些标签会导致不准确的结果-例如一个名为
Die的标签!死亡死(不问)返回每个标题,其中包含“死亡”一词


这里有什么明显的我遗漏的吗?我只想得到包含整个短语的标题,按照输入的确切方式。

如果您想匹配整个短语,那么您应该执行以下操作:

从标题为“%Green Day%”的新闻中选择标题


这将返回标题中带有短语“绿色日”的结果。

据我在中看到的,使用引号应该足够了。从文档页面上的示例中:

“一些词”

查找包含确切短语“some words”的行(例如,包含“some words of willigence”但不包含“some noise words”的行)。请注意,包含短语的“”字符是分隔短语的运算符字符。它们不是包含搜索字符串本身的引号


@马特-使用米奇的代码匹配“恐怖”的原因是因为在第一个%字符后没有留下空格。 精确搜索单个单词的正确语法如下所示

SELECT headline FROM news WHERE headline LIKE '% Green Day %' 

这将管理您检索以完全相同的方式输入的搜索词的请求。

您必须在双引号周围加上额外的单引号,这意味着精确的词查询。
+
运算符只意味着
逻辑

SELECT headline 
  FROM `news` 
 WHERE MATCH(headline) AGAINST ('"+Green +Day"' IN BOOLEAN MODE)

不,先试试这个。对“绿日”很好,但如果我有一个像“错误”这样的标签,它也会和标题中的“恐怖”一词相匹配。@Matt-那么你应该尝试使用正则表达式搜索并设置单词边界……或者使用全文索引:)@Pekka-哈,我的错。我不敢相信我没有想到用引号括起来。