MYSQL MATCH ... AGAINST返回没有结果

时间:2013-05-08 13:35:48

标签: mysql

我对此感到困惑。

我目前正在开发一个电子商务网站,并拥有一个充满测试产品的表格。在此表中有一个名为“name”的字段,其类型为TEXT并具有FULLTEXT索引。

我插入了几百行虚拟数据,每一行都插入了“测试产品”(没有引号),因为它在“名称”字段中的值。

但是,运行以下命令会返回零结果,即使“product”一词当前位于每行的名称字段中。

SELECT name FROM Products 在哪里(名称)反对('产品')

我检查了服务器变量,一切都设置为默认值。最小字符是4,停用词是默认字符等。据我所知,产品不是停用词。

如果我可以提供任何可能有助于找到此问题解决方案的更多信息,请与我们联系。

非常感谢提前。

1 个答案:

答案 0 :(得分:5)

MySQL documentation on Fulltext searches开始,您的搜索查询被视为触发停用词,因为相关字符串存在于所有行中。

  

当您第一次尝试时,50%的阈值具有重要意义   全文搜索,看看它是如何工作的:如果你创建一个表和   只插入一行或两行文本,文本中的每个单词   发生在至少50%的行中。因此,任何搜索都不会返回   结果。一定要插入至少三行,最好是多行   更多。需要绕过50%限制的用户可以使用布尔值   搜索模式

以下是引用Boolean Full-Text Searches

的链接