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。
我在数据库中有以下记录:'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。