MySQL InnoDB全文搜索包含电子邮件地址

Cha*_*975 8 mysql

我在2台Mac笔记本电脑上安装了mysql社区5.6.13 - 一台使用os x 10.8,另一台使用os x 10.9.

据我所知,mysql的安装是相同的,但相同的全文搜索在每次安装时表现不同.

我的查询是:

SELECT legal_matter.* FROM legal_matter 
left join user_account 
on user_account.id = legal_matter.lawyer_id 
left join client_account 
on client_account.id = legal_matter.client_account_id 
WHERE MATCH (legal_matter.question) AGAINST ('lawyer@domain.com.au' IN BOOLEAN MODE) 
OR user_account.username like '%lawyer@domain.com.au%' 
OR legal_matter.display_name like '%lawyer@domain.com.au%' 
OR client_account.company_name like '%lawyer@domain.com.au%' 
Run Code Online (Sandbox Code Playgroud)

在10.8的笔记本电脑上,查询正常执行,在10.9的笔记本电脑上,查询抱怨:

Error Code: 1064. syntax error, unexpected '@', expecting $end 
Run Code Online (Sandbox Code Playgroud)

TI不知道它是否与不同的操作系统版本有任何关系,我怀疑没有,但我不知道问题是什么.

任何指针都感激不尽.

谢谢.

sev*_*ven 5

我有使用匹配电子邮件的查询,当我切换到 innodb 时开始失败,因为 @ 用于在 InnoDB 中搜索相距一定距离的单词:

SELECT username FROM users WHERE MATCH(user_email) AGAINST('test@user.com' IN BOOLEAN MODE);
ERROR 1064 (42000): syntax error, unexpected '@', expecting $end

SELECT username FROM users WHERE MATCH(user_email) AGAINST("test@user.com" IN BOOLEAN MODE);
ERROR 1064 (42000): syntax error, unexpected '@', expecting $end
mysql>
Run Code Online (Sandbox Code Playgroud)

尝试像这样包装您的电子邮件地址:

SELECT username FROM users WHERE MATCH(user_email) AGAINST('"test@user.com"' IN BOOLEAN MODE);
Run Code Online (Sandbox Code Playgroud)

或逃脱:

SELECT username FROM users WHERE MATCH(user_email) AGAINST('\"test@user.com\"' IN BOOLEAN MODE);
Run Code Online (Sandbox Code Playgroud)


Up_*_*One -1

尝试使用以下语法:

SELECT legal_matter.* FROM legal_matter 
left join user_account 
on user_account.id = legal_matter.lawyer_id 
left join client_account 
on client_account.id = legal_matter.client_account_id 
WHERE MATCH (legal_matter.question) AGAINST ('+lawyer@domain.com.au' IN BOOLEAN MODE) 
OR user_account.username like '%lawyer@domain.com.au%' 
OR legal_matter.display_name like '%lawyer@domain.com.au%' 
OR client_account.company_name like '%lawyer@domain.com.au%' 
Run Code Online (Sandbox Code Playgroud)