4

我完全被这个迷惑了。

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

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

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

SELECT name FROM Products WHERE MATCH (name) AGAINST ('product')

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

如果我可以提供任何进一步的信息可能有助于找到解决此问题的方法,请告诉我。

提前谢谢了。

4

1 回答 1

8

有关全文搜索的 MySQL 文档中,您的搜索查询被视为触发了停用词,因为相关字符串存在于所有行中。

当您第一次尝试全文搜索以查看其工作原理时,50% 阈值具有重要意义:如果您创建一个表并仅在其中插入一两行文本,则文本中的每个单词至少出现 50%的行。因此,没有搜索返回任何结果。确保插入至少三行,最好更多。需要绕过 50% 限制的用户可以使用布尔搜索模式

这是布尔全文搜索的参考链接

于 2013-05-08T13:46:04.910 回答