当我运行以下命令时 MATCH(my_text) AGAINST ('"hey"' IN BOOLEAN MODE)
我得到所有包含 hey
当我运行以下命令时 MATCH(my_text) AGAINST ('"n=3"' IN BOOLEAN MODE)
即使有两行包含 n=3
这张table有 fulltext
指数 utf8_general_ci
校勘
ENGINE=InnoDB innodb_ft_min_token_size = 3
ft_min_word_len = 4 mysql version = 5.6.10
我怀疑这和 =
但不知道怎么用 *()+
为了表现出它需要的样子,尝试了几种不同的组合,但没有成功。
1条答案
按热度按时间acruukt91#
=
未被视为单词字符,因此未编制索引发件人:https://dev.mysql.com/doc/refman/8.0/en/fulltext-fine-tuning.html
字符集修改
对于内置的全文解析器,可以通过多种方式更改被视为单词字符的字符集,如下表所述。修改后,为包含任何全文索引的每个表重新生成索引。假设要将连字符('-')视为单词字符。使用以下方法之一:
true\u word\u char()和misc\u word\u char()宏。将“-”添加到其中一个宏并重新编译mysql。
其他字符的字母和数字。您可以编辑其中一个字符集xml文件中数组的内容,以指定“-”是“字母”。然后将给定的字符集用作全文索引。有关数组格式的信息,请参阅第10.12.1节“字符定义数组”。
有关添加排序规则的信息,请参阅第10.13节“向字符集添加排序规则”。有关特定于全文索引的示例,请参阅第12.9.7节“为全文索引添加排序规则”。