在Innodb全文搜索中逃脱@符号

时间:2016-11-09 09:52:35

标签: php mysql full-text-search innodb

无论如何都要在innodb全文搜索中逃避@。我有tableemail列。

我需要的是返回包含@符号的所有值。

SELECT   id
FROM     table
WHERE    ( MATCH (table.email) AGAINST ('+@+' IN BOOLEAN MODE) )
AND      id IS NOT NULL
GROUP BY id

但这会产生语法错误,因为MySQL医生说@不能在查询http://dev.mysql.com/doc/refman/5.6/en/fulltext-boolean.html

中使用

我可以从php中逃脱它们或其他任何方式吗?

1 个答案:

答案 0 :(得分:1)

MATCH(email) AGAINST ('+test +email +com' IN BOOLEAN MODE)
AND email LIKE 'test@email.com`

这将首先进行FULLTEXT搜索,并快速完成。对于匹配的每一行,它将进行额外检查。

警告:innodb_ft_min_token_size可能为3,因此ab@xyz.com之类的内容应避免包含+ab。在极端情况下,请避免使用MATCH ab@cd.tv,因为所有标记都太短。

也就是说,您需要一些客户端代码来构造MATCH...AGAINST