mysql8 match against 查询不到数据是怎么回事


SELECT  *  FROM  data_post  WHERE   match (search_Content)  AGAINST ('为什么') )  LIMIT 20

search_Content 设置了 fulltext

数据量也有几万条,里面也包含了大量的'为什么'关键词

但是就是查询不到数据.

是MySQL8...请问有什么地方没有配置正确吗?

img

以下回答引用自chatGpt, 有用的话,请采纳哇!!!
可能是因为MySQL的全文搜索功能需要配置一些参数才能正常使用。请确认以下几点是否正确配置:

  1. 数据库引擎必须是MyISAM或InnoDB,因为只有这两种引擎支持全文搜索。

  2. 需要为搜索字段创建全文索引,可以使用以下命令创建:

    ALTER TABLE data_post ADD FULLTEXT(search_Content);
    
  3. 确认MySQL的全文搜索参数是否正确配置,可以使用以下命令查看:

    SHOW VARIABLES LIKE 'ft_%';
    

    确认以下参数是否正确配置:

    • ft_min_word_len:最小词长,默认为4,如果搜索的关键词长度小于该值,则不会被索引。
    • ft_stopword_file:停用词文件路径,默认为MySQL安装目录下的stopwords.txt,可以根据需要修改。

如果以上步骤都已正确配置,但仍然无法查询到数据,可以尝试使用以下命令进行查询:

SELECT * FROM data_post WHERE MATCH(search_Content) AGAINST('为什么' IN BOOLEAN MODE);

其中,IN BOOLEAN MODE表示使用布尔模式进行搜索,可以更精确地匹配关键词。如果还有问题,请提供更多详细信息以便进一步排查。