我有这个网站,其中有很多带有变音符号的文本(根据维基百科,字母添加了辅助字形),大多数人使用没有字形的单词搜索这些文本。现在,通过拥有没有变音符号的文本副本来做到这一点应该不具有挑战性。但是,我想突出显示原始文本中的匹配项。最好的方法是什么?
问问题
554 次
1 回答
1
您应该尝试更改 MySQL 数据库中的排序规则设置。
在这个话题的讨论中似乎经常出现三个:
utf8_general_ci
utf8_unicode_ci
utf8_bin
← 你可能想要这个。
我发现#3 将匹配搜索中的重音符号。这个答案提供了一些关于差异的背景,但没有提到utf8_bin
对口音也很敏感的事实。您可能想尝试所有这三个,这样您就可以自己测试它是否适用于您正在处理的语言/脚本。
要真正确定事情会正确匹配,您还必须研究 Unicode 规范化,这实际上是一个完全不同的蜡球。您的用户可能会键入一个带有重音的查询,该查询的规范化与您的数据存储在其中的规范化不同,因此它可能无法匹配。我在 Sqlite 上遇到过这个问题,不确定它是否适用于 MySQL。
FWIW,这是CREATE TABLE
我目前正在使用的,我需要匹配重音的地方,即设置 COLLATION:
CREATE TABLE `glosses` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`morphemes` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
`labels` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
`phrase_id` int(11) DEFAULT NULL,
`nth_word` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
你可以在最后看到COLLATE=utf8_bin
钉子。
于 2011-06-22T00:40:41.127 回答