MySQL MATCH AGAINST при поиске адресов электронной почты - PullRequest
2 голосов
/ 22 января 2012

Я пишу скрипт рассылки, и мне нужно реализовать поиск по адресам.Я проиндексировал таблицу с помощью 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%", но для большой таблицы это занимает смешное время.Есть ли решение для этого?Я хочу, чтобы при поиске отображались только полностью совпадающие электронные письма, а не их часть.Заранее спасибо.

1 Ответ

9 голосов
/ 22 января 2012

Чтобы соответствовать точной фразе, вы должны заключить фразу в двойные кавычки.Поэтому измените ваш запрос на:

SELECT * FROM addresses WHERE MATCH(email) AGAINST('"name@example.com"' IN BOOLEAN MODE)

Источник

...