我们已成功在查询中使用MATCH AGAINST
在我们的数据库中进行搜索,而该数据库大多使用捷克语,因此我们将utf8_czech_ci
用作默认排序规则。我们将查询的最小长度设置为1,并且禁用了所有停用词。
但是,请考虑搜索单词Schedule
。
当你写:s
:找到Schedule
sc
:未找到任何内容sch
:找到Schedule
看起来它会将ch
视为单个字符(在捷克语中是正确的),但在进行全文搜索时肯定是错误的。
有办法避免这种行为吗?
最佳答案
是的,utf8_czech_ci将ch
视为单个字母,在h
和i
之间。 Č
和č
相等,但毕竟c
。与其他带有Caron的字母类似。
This提供各种utf8归类的归类怪癖。
我认为您的观察对这种整理是正确的。 “时间表”是捷克语吗?
为了避免这种情况,请为该列选择另一个utf8 COLLATION
,然后重建FULLTEXT
索引。 utf8_bin
和utf8_general_ci
和utf8_unicode_ci
可能是候选者。您可能需要使两列(和索引)具有相同的文本,但排序规则不同。然后选择该列以控制您要搜索的语言。
您是在“比较”字符串吗?如果是这样,则归类将有很大的不同-捷克语中的“ say”
(至少就此问题而言,utf8mb4与utf8的操作相同。)
关于mysql - MySQL与utf8_czech_ci中的'ch'匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42158072/