【发布时间】:2020-07-04 23:26:10
【问题描述】:
我正在为我们的 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 的可能性,据我了解它不支持查询中的“@”符号。有没有其他方法可以使用 MATCH AGAINST 同时仍然能够通过确切的完整地址进行搜索?
我总是可以使用带有 LIKE 和一些通配符的 SQL,但我仍然更喜欢全文搜索。
【问题讨论】:
-
长话短说:将全文搜索与
LIKE结合起来,使用OR。如果您想知道为什么阅读文档,全文搜索一般是如何工作的。 -
@emix - 不是
OR。
标签: mysql sql database search innodb