转义@符号在Innodb全文搜索


Escape @ symbol in Innodb Full Text Search

在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中转义吗?

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