MySQL FULLTEXT小数点被视为单词分隔符

时间:2020-06-03 08:44:14

标签: mysql full-text-search decimal token point

我们出售3.7v,7.4v,11.1v的脂电池,电压在说明字段中。 FULLTEXT可以索引FT_MIN_WORD_LEN为4的基于字符的字段,并使其包含标记“ 3.7v”等,并且在搜索时可以找到这些标记。我所有的实验都表明,在搜索这些标记时,索引中缺少这些标记,我怀疑这是因为小数点充当了标记分隔符,并且没有任何标记的长度足以满足最小长度。

我在做什么错?为什么无法与3.7v匹配找到我的条目? MySQL FULLTEXT是否理解句号和小数点之间的区别?

2 个答案:

答案 0 :(得分:0)

即使FULLTEXT足够聪明,可以识别"."的这两种用法,其他5种用法又如何呢?那其他标点符号呢? show "_"何时成为“单词”的一部分,何时不成为“ word”的一部分?等等等等

以下是您(以及许多其他情况)的建议。

  1. 清理数据。
  2. 将其放在表格中。
  3. 类似地,清理查询以将其馈送到AGAINST子句中。

通过“清理”,我的意思是做几件事来修改数据以在FULLTEXT的限制下充分发挥作用。

在您的一个示例中,建议将3.7v3.7 v更改为3_7v

您可能会发现某些“单词”比min_word_length短;对于他们,您可以垫上他们或做一些其他的事情。

我建议您对所有MySQL工作都使用InnoDB,而不是MyISAM。 (请注意,那里的设置为innodb_ft_min_token_size,默认为“ 3”。)

答案 1 :(得分:0)

我在这里找到了解决方法...

https://dev.mysql.com/doc/refman/8.0/en/full-text-adding-collation.html

MySql文档12.9.7

基本上,有用于控制字符集行为的xml文件,并且我能够更改“。”的行为。从标点符号到常规字符的字符。鉴于该列包含零件号,因此我更改了大多数字符,因此它们不会标点创建新的排序规则集,并将其用于我的零件号列。现在可以按要求工作。