首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在InnoDB中构建将下划线视为单独单词的全文索引?

如何在InnoDB中构建将下划线视为单独单词的全文索引?
EN

Stack Overflow用户
提问于 2017-10-15 22:17:53
回答 1查看 171关注 0票数 0

这样的查询将返回一个非空集:

SELECT * FROM mytable WHERE MATCH(name) AGAINST ('+some +text' IN BOOLEAN MODE);

来自唯一记录的名称属性为“some_text”的表。基本上,我希望强制InnoDB在构建全文索引时将下划线视为分隔符,就像对待点和连字符一样。这是如何在mysql中本地实现的,甚至是通过默认具有此功能的第三方解析器实现的?谢谢

编辑:我知道最简单的解决方案是复制列并按我的意愿分隔单词,然后在此基础上构建索引,但如果没有必要,我宁愿不这样做,因为表有数百万行。

EN

Stack Overflow用户

发布于 2017-10-15 22:23:59

您正在尝试更改定义单词的字符。要查看的地方是在documentation中微调搜索。具体地说,您希望控制单词中允许的字符--并且希望_是非单词字符。

一种推荐的方法是修改字符集文件:

假设您希望将连字符('-')视为单词字符。使用以下方法之一:

。。。

  • 修改字符集文件:这不需要重新编译。true_word_char()宏使用“字符类型”表来区分字母和数字与其他字符。。您可以编辑其中一个字符集XML文件中的数组内容,以指定'-‘是一个“字母”。然后将给定的字符集用于全文索引。有关数组格式的信息,请参阅第10.3.1节,“字符定义数组”。

唯一的缺点是这将影响所有全文索引。

另一种方法是定义第二列,将下划线替换为空格,并在此列上构建全文索引。

如果您需要特定于索引的方法,那么另一种选择是定义您自己的排序规则。

注意:您可能还需要注意最小字长。默认值为3或4;忽略较小的单词。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46756030

复制
相关文章

相似问题

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