我有一个网站,我刚刚写了一个很棒的搜索功能。我刚刚意识到我的数据库中有一些带有重音标记的单词。所以当有人输入要搜索的单词时,如果没有重音标记,他们就找不到他们想要的内容。
现在大多数搜索功能都解决了这个问题;他们是如何做到的呢?必须有一些聪明的伎俩。我的大多数查询都使用mysql的MATCH功能,但其中一个使用LIKE。
答案 0 :(得分:1)
您需要在架构上设置特定的collation,以便MySQL知道哪些字符应该是等效的。具有变音符号的字母是否与没有字符或其他字符序列的字母相同是依赖于语言的,但请尝试使用utf8_general_ci作为忽略重音的起点(假设您使用的是UTF-8字符集,应该真的。)
尝试对所有字符串使用相同的排序规则,以便可以加入和比较它们,而无需进行昂贵的折衷索引转换。