MySQL 上的全文搜索:无法在 hyphen/dash 之后按词搜索

Full Text Search on MySQL : Can not search by word after hyphen/dash

我在数据库中有以下记录:'Vinyl Exam - CA Only'

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

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

记录已 returned,但在这种情况下:

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

项目未 returned。

我应该如何处理 return 最后一个案例中的项目。

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

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

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

[mysqld]
innodb_ft_min_token_size=2
ft_min_word_len=2

查找更多详细信息here