我正在编写新闻稿脚本,并且需要在地址中实施搜索。我用FULLTEXT为该表编制了索引,但是当我执行以下查询时:
SELECT * FROM addresses WHERE MATCH(email) AGAINST("name@example.com" IN BOOLEAN MODE)
我得到奇怪的结果。它显示“ example.com”上的所有电子邮件以及用户名为“ name”的所有电子邮件。例如我得到:
john@example.com name@mail.net steven@example.com
我重新编写了查询,以使用LIKE“ %name@example.com%”,但是对于一个大表,它需要花费大量的时间才能完成。有解决方案吗?我想在搜索时仅显示完全匹配的电子邮件,而不显示其中的一部分。先感谢您。
要匹配确切的短语,您必须将该短语用双引号引起来。因此,将查询更改为:
SELECT * FROM addresses WHERE MATCH(email) AGAINST('"name@example.com"' INBOOLEAN MODE)
来源