我在数据库中有以下记录:'乙烯基考试-仅CA'
所以,当我执行以下搜索时:
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);
未返回项目。
在最后一种情况下我应该怎么做才能退还该物品。
您的搜索不起作用的原因是,默认情况下,可以使用全文搜索的单词有一个最小长度限制。据我所记得,InnoDB
至少3个字符,MyISAM
至少4个字符。
由于您的单词CA
仅2个字符长,因此在搜索中将被忽略。您可以通过更改mysql设置来增加/减少此字符限制。
基本上,您需要在mysql my.cnf
文件中添加以下配置(取决于数据库表引擎):
[mysqld]
innodb_ft_min_token_size=2
ft_min_word_len=2
查找更多详细信息here。