MySQL 使用通配符按相关性进行全文搜索

MySQL full text search by relevancy with wildcard

我需要搜索产品并按相关性对它们进行排序,为此我尝试了这个 MySQL 查询

SELECT *, MATCH(`SubProductName`) AGAINST ('+app*' IN BOOLEAN MODE) AS
relevance FROM `tblsubproducts1` WHERE MATCH(SubProductName) AGAINST 
('+app*' IN BOOLEAN MODE)  ORDER BY relevance DESC

例如 returns 的查询:Apple Thunderbolt、Apple TV ... 作为结果。这是对的。

但是当我尝试使用 '+usb*' 时,它没有 return 任何行,而数据库包含我可以通过匹配找到 SubProductName USB-C Charge Cable 的行反对 '+cable*'

澄清一下,我希望搜索使用部分词,例如 'app' for apple,这就是我添加 * 的原因,但为什么它似乎并不总是有效,这让我感到困惑这里。是 USB-C 中的 - 还是...?

如果您使用的是 MyISAM,则全文索引的最小字长为 4。(已记录 here。)

换句话说,"usb"甚至不在索引中。您需要更改此参数并重新构建索引。