我们已成功在查询中使用MATCH AGAINST在我们的数据库中进行搜索,而该数据库大多使用捷克语,因此我们将utf8_czech_ci用作默认排序规则。我们将查询的最小长度设置为1,并且禁用了所有停用词。

但是,请考虑搜索单词Schedule

当你写:


s:找到Schedule
sc:未找到任何内容
sch:找到Schedule


看起来它会将ch视为单个字符(在捷克语中是正确的),但在进行全文搜索时肯定是错误的。

有办法避免这种行为吗?

最佳答案

是的,utf8_czech_ci将ch视为单个字母,在hi之间。 Čč相等,但毕竟c。与其他带有Caron的字母类似。

This提供各种utf8归类的归类怪癖。

我认为您的观察对这种整理是正确的。 “时间表”是捷克语吗?

为了避免这种情况,请为该列选择另一个utf8 COLLATION,然后重建FULLTEXT索引。 utf8_binutf8_general_ciutf8_unicode_ci可能是候选者。您可能需要使两列(和索引)具有相同的文本,但排序规则不同。然后选择该列以控制您要搜索的语言。

您是在“比较”字符串吗?如果是这样,则归类将有很大的不同-捷克语中的“ say”
(至少就此问题而言,utf8mb4与utf8的操作相同。)

关于mysql - MySQL与utf8_czech_ci中的'ch'匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42158072/

10-10 01:57