首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql与查询匹配的特殊字符搜索

问Mysql与查询匹配的特殊字符搜索
EN

Stack Overflow用户
提问于 2013-10-09 05:24:48
回答 1查看 1.2K关注 0票数 2

我有以下匹配的查询,从数据库表中搜索记录,基于搜索短语。

代码语言:javascript
复制
    SELECT * FROM My_Table WHERE MATCH (catchall) AGAINST ('"horse"' IN BOOLEAN MODE)

此查询工作正常。当搜索短语包含“(”等)这样的特殊字符时,它只跳过这样的特殊字符。如果我搜索“(马)”,它会给我和“马”一样的结果。

代码语言:javascript
复制
    SELECT * FROM My_Table WHERE MATCH (catchall) AGAINST ('"(horse)"' IN BOOLEAN MODE)

这是否意味着与查询的匹配不适用于特殊字符,还是意味着我遗漏了什么。请建议一下。谢谢。我尝试从查询中移除IN布尔模式,但它没有工作。

EN

回答 1

Stack Overflow用户

发布于 2013-10-09 05:33:57

来自文献资料

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

如果你想把婚前协议当作“单词字符”,有两种可能性:

如果要更改被认为是字字符的字符集,可以通过两种方式进行更改。假设您希望将连字符('-')视为单词字符。使用以下任何一种方法: 修改MySQL源代码:在myisam/ftdefs.h中,请参阅true_word_char()和misc_word_char()宏。将“-”添加到其中一个宏中并重新编译MySQL。 修改字符集文件:这不需要重新编译。true_word_char()宏使用“字符类型”表来区分字母和数字与其他字符。。您可以编辑一个字符集XML文件中的内容,以指定'-‘是一个“字母”。然后使用给定的字符集作为全文索引。 修改后,必须为每个包含任何全文索引的表重新生成索引。

第三种方法是根本不使用MATCH ... AGAINST,而是使用LIKE --但这可能会变得复杂(如果您想使用+/-之类的满文本搜索的其他操作符),并放慢查询的速度。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19263777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档