gpt4 book ai didi

mysql - 在 MySQL 中对日语字符(汉字、平假名、片假名)进行排序

转载 作者:可可西里 更新时间:2023-11-01 08:23:56 26 4
gpt4 key购买 nike

我熟悉不同的 MySQL 排序规则,我的数据库当前设置为 UTF8_general_ci,并且我使用 UTF8_unicode_ci 进行了半成功的搜索。我正在运行 mysql 5.6,我无法使用最新的排序规则,升级时很头疼。

我说半成功,因为 ご 在使用 UTF8_unicode_ci 时返回 こ;如果我能解决下面的大问题,我可以接受。

我想要实现的是搜索我的城市列并返回一行,因此“横滨”和“横滨”以及よこはま和ヨコハマ都在查询数据库时返回同一行。这可能吗?

最佳答案

这是一个难题,我怀疑您不能仅使用 MySQL 轻松解决它。

有一个程序叫做 Migemo它在不同的上下文中在一定程度上处理了这个问题。它生成一个正则表达式以将未转换的输入与文档匹配。你可以看到一个输出版本的在线演示 here .例如,输入“toukyou”的正则表达式是:

[とトト][うウウ][きキキ][ょョョ][うウウ]|とうきょう|当協会|東京|東教|toukyou|([tţťŧŢŤŦ]|t[¸ˇ-])([oòóôõöøǿōŏőǒǫǭÒÓÔÕÖØǾŌŎŐǑǪǬ]|o([ˋ`ˊ´ˆ^˜~¨/ˉ¯˘˝ˇ˛]|/[ˊ´]|[ˊ´]/|˛[ˉ¯]|[ˉ¯]˛))([uùúûüũūŭůűųǔǖǘǚǜÙÚÛÜŨŪŬŮŰŲǓǕǗǙǛ]|u([ˋ`ˊ´ˆ^˜~¨˚°ˉ¯˘˛ˇ]|¨[ˉ¯]|[ˉ¯]¨|¨[ˊ´]|[ˊ´]¨|¨ˇ|ˇ¨|¨[ˋ`]|[ˋ`]¨))([kķĸǩĶǨ]|k[¸ˇ])([yỳýÿŷỲÝŸŶ]|y[ˋ`ˊ´¨ˆ^])([oòóôõöøǿōŏőǒǫǭÒÓÔÕÖØǾŌŎŐǑǪǬ]|o([ˋ`ˊ´ˆ^˜~¨/ˉ¯˘˝ˇ˛]|/[ˊ´]|[ˊ´]/|˛[ˉ¯]|[ˉ¯]˛))([uùúûüũūŭůűųǔǖǘǚǜÙÚÛÜŨŪŬŮŰŲǓǕǗǙǛ]|u([ˋ`ˊ´ˆ^˜~¨˚°ˉ¯˘˛ˇ]|¨[ˉ¯]|[ˉ¯]¨|¨[ˊ´]|[ˊ´]¨|¨ˇ|ˇ¨|¨[ˋ`]|[ˋ`]¨))

由于 Migemo 用于匹配部分未转换的输入,它需要 ASCII 输入,因此您不能按原样使用它。然而,Migemo 的基本策略——将您的输入转换为匹配所有变体的正则表达式——可用于搜索您的 MySQL 数据库。

正如一位评论者所提到的,如果您想支持具有特殊罗马化的地名,这很难;例如,您是否需要同时识别“新桥”和“新桥”?如果您只是使用平假名输入,即使是“Tokyo”也需要异常(exception)。为此,我建议您建立自己的列表,可能使用 romaji data from JP Post .它不会处理所有变体,但会处理标准变体。

希望对您有所帮助。

关于mysql - 在 MySQL 中对日语字符(汉字、平假名、片假名)进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51490342/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com