Mysql MATCH AGAINST在查找带有at的字符串时不起作用.(点)



我们想在记录中搜索M.Sc使用match对mysql查询

我们正在尝试以下查询

SELECT  education 
FROM `table` 
where MATCH (education) AGAINST ("B.Sc" IN BOOLEAN MODE) 

但显示没有结果,但当我们使用正常的文凭时,工作良好

如何搜索和获取结果当字符串搜索有DOT

你(可能)不能:https://dev.mysql.com/doc/refman/8.0/en/fulltext-natural-language.html

内置的FULLTEXT解析器通过查找特定的分隔符来确定单词的开始和结束位置;例如:(空格)、,(逗号)、.(句号)。

您可以创建一个插件来替换解析器,但那是另一回事(尽管可能已经有人创建了)。更不用说它还会带来其他后果,比如:"我喜欢土豆。"被分为"我"one_answers"喜欢";和"土豆!"(点号是'word'的一部分)。

无论如何,正因为如此,B.Sc被解释为两个词:"B"one_answers";Sc"。并且,由于innodb_ft_min_token_size(如果使用InnoDB)或ft_min_word_len(如果使用MyISAM)的默认值分别为3和4,它们被忽略了,因为它们太短了。

正如在注释中指出的那样,在这种情况下,您最好使用标准比较(=LIKE)。

最新更新