这样的查询将返回一个非空集:
SELECT * FROM mytable WHERE MATCH(name) AGAINST ('+some +text' IN BOOLEAN MODE);
来自唯一记录的名称属性为“some_text”的表。基本上,我希望强制InnoDB在构建全文索引时将下划线视为分隔符,就像对待点和连字符一样。这是如何在mysql中本地实现的,甚至是通过默认具有此功能的第三方解析器实现的?谢谢
编辑:我知道最简单的解决方案是复制列并按我的意愿分隔单词,然后在此基础上构建索引,但如果没有必要,我宁愿不这样做,因为表有数百万行。
发布于 2017-10-15 22:23:59
您正在尝试更改定义单词的字符。要查看的地方是在documentation中微调搜索。具体地说,您希望控制单词中允许的字符--并且希望_是非单词字符。
一种推荐的方法是修改字符集文件:
假设您希望将连字符('-')视为单词字符。使用以下方法之一:
。。。
唯一的缺点是这将影响所有全文索引。
另一种方法是定义第二列,将下划线替换为空格,并在此列上构建全文索引。
如果您需要特定于索引的方法,那么另一种选择是定义您自己的排序规则。
注意:您可能还需要注意最小字长。默认值为3或4;忽略较小的单词。
https://stackoverflow.com/questions/46756030
复制相似问题