如何在MySQL中对电子邮件使用全文匹配?

时间:2020-03-24 12:57:12

标签: mysql sql database search innodb

我在我的CRM系统的联系人数据库表(MySQL,InnoDB引擎)上添加了“通过电子邮件搜索”功能。我添加了FULLTEXT索引和类似的部分搜索

WHERE MATCH(cc.email_c) AGAINST('Joe' IN NATURAL LANGUAGE MODE)

工作正常。但是,如果我尝试与这样的完整电子邮件地址匹配

WHERE MATCH(cc.email_c) AGAINST('Joe@gmail.com' IN NATURAL LANGUAGE MODE)

所有带有Gmail的电子邮件地址都将返回。根据我的理解,它在查询中不支持“ @”符号,因此我已经放弃了使用BOOLEAN MODE的可能性。还有什么其他方式可以使用匹配比赛,但仍然可以通过确切的完整地址进行搜索?

我总是可以将SQL与LIKE和一些通配符一起使用,但是我仍然希望进行全文搜索。

1 个答案:

答案 0 :(得分:-1)

将其转换为AGAINST('+Joe +gmail +com' IN BOOLEAN MODE)

但是要当心;短名称和“停用词”前面不应带有“ +”。

然后,由于不够精确,请结合使用LIKE

WHERE MATCH(email) AGAINST('+Joe +gmail +com' IN BOOLEAN MODE)
  AND email LIKE '%Joe@gmail.com%'

第一部分给您速度;第二部分将仅测试通过第一部分的测试。