首页 > 解决方案 > MySQL 上的全文搜索:无法在连字符/破折号后按单词搜索

问题描述

我在 DB 中有以下记录:'Vinyl Exam - CA Only'

因此,当我执行以下搜索时:

SELECT  Description
            FROM    products AS p
            WHERE   MATCH (Description) AGAINST ('+Vinyl* +Only*' IN BOOLEAN MODE);

返回记录,但在这种情况下:

SELECT  Description
            FROM    products AS p
            WHERE   MATCH (Description) AGAINST ('+Vinyl* +Only* +CA*' IN BOOLEAN MODE);

物品不被退回。

在最后一种情况下,我应该怎么做才能退回该物品。

标签: mysqlsqlsearchfull-text-searchamazon-aurora

解决方案


您的搜索不起作用的原因是默认情况下,可以使用全文搜索的单词有最小长度限制。据我记得,最少 3 个字符,最少InnoDB4 个字符MyISAM

由于您的单词CA只有 2 个字符长,因此在搜索中将被忽略。您可以通过更改 mysql 设置来增加/减少此字符限制。

基本上你需要在你的 mysqlmy.cnf文件中添加以下配置(取决于你的数据库表引擎):

[mysqld]
innodb_ft_min_token_size=2
ft_min_word_len=2

在此处查找更多详细信息。


推荐阅读