我有一个名为商人的表格,其结构如下所示
所以name列是varchar,最大长度为256
我还添加了类似如下的索引
因此,当我运行以下查询时。.
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
我得到的正确结果如下...
哪个好。但是现在,当我将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;
答案 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个字符的限制