Php Mysql与具有特殊特许搜索的查询匹配

Php Mysql与具有特殊特许搜索的查询匹配,php,mysql,Php,Mysql,我对查询进行了以下匹配,该查询根据搜索短语从数据库表中搜索记录 SELECT * FROM My_Table WHERE MATCH (catchall) AGAINST ('"horse"' IN BOOLEAN MODE) 此查询工作正常。当搜索短语包含诸如“(”等特殊字符时,它只跳过这些特殊字符。 如果我搜索“(horse)”,它给我的结果与搜索“horse”的结果相同 这是否意味着“匹配查询”不能使用特殊字符,或者我遗漏了什么。请建议。谢谢。 我尝试以布尔模式从查询中删除,但没

我对查询进行了以下匹配,该查询根据搜索短语从数据库表中搜索记录

    SELECT * FROM My_Table WHERE MATCH (catchall) AGAINST ('"horse"' IN BOOLEAN MODE)
此查询工作正常。当搜索短语包含诸如“(”等特殊字符时,它只跳过这些特殊字符。 如果我搜索“(horse)”,它给我的结果与搜索“horse”的结果相同

这是否意味着“匹配查询”不能使用特殊字符,或者我遗漏了什么。请建议。谢谢。 我尝试以布尔模式从查询中删除,但没有成功。

来自:

括号将单词分组为子表达式。括号中的组可以嵌套

如果您想将prenthes视为“文字角色”,有两种可能:

如果要更改被视为word的字符集 角色,您可以通过两种方式来实现。假设您希望 连字符(“-”)作为单词字符。请使用以下任一选项 方法:

修改MySQL源代码:在myisam/ftdefs.h中,查看true\u word\u char() 和misc_word_char()宏。向其中一个宏添加“-”,然后 重新编译MySQL

修改字符集文件:这不需要重新编译 true\u word\u char()宏使用“字符类型”表来区分 来自其他字符的字母和数字..您可以编辑 要指定的字符集XML文件之一中的内容 “-”是一个“字母”。然后将给定的字符集用于 全文索引

在进行修改之后,必须为每个索引重新生成索引 包含任何全文索引的表


第三种方法是根本不使用
匹配···································并放慢查询速度。

谢谢您的回复@oezi。我是否应该添加所有特殊字符,以便它与matach一起处理类似于“”的查询,等等。这会创建任何安全整体还是完全安全。我不想使用like query。这不会创建安全漏洞或类似的东西-但你将无法再使用这些特殊角色的功能,所以我只添加绝对必要的功能。明白了。@oezi最后一个问题是,有没有办法逃脱ch查询中的字符?
    SELECT * FROM My_Table WHERE MATCH (catchall) AGAINST ('"(horse)"' IN BOOLEAN MODE)