使用匹配依据不会返回正确的结果

时间:2019-07-02 15:21:37

标签: mysql

我有一个名为商人的表格,其结构如下所示

enter image description here

所以name列是varchar,最大长度为256

我还添加了类似如下的索引

enter image description here

因此,当我运行以下查询时。.

select *, MATCH(`name`) AGAINST('Google') AS relevance from `merchants` where MATCH(`name`) AGAINST('Google' IN NATURAL LANGUAGE MODE) HAVING `relevance` > 0 order by `relevance` desc

我得到的正确结果如下...

enter image description here

哪个好。但是现在,当我将Google更改为“ Goo”时,您仍然希望它至少返回Google,即使不是Google环聊,其相似性也较小。

但是它没有返回任何一个,有没有办法解决这个问题?

要创建表,这是查询...

CREATE TABLE `merchants` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `merchant_id` int(10) unsigned NOT NULL,
  `name` varchar(256) COLLATE utf8mb4_unicode_ci NOT NULL,
  PRIMARY KEY (`id`),
  FULLTEXT KEY `similarity_index` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

1 个答案:

答案 0 :(得分:0)

查询应如下所示:

<p>{{paquete.nombre}}</p>

因为要进行全文搜索,您需要至少 4个字符,并且需要布尔模式才能使用通配符

可以按照https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_ft_min_word_len

中的说明配置4个字符的限制
相关问题