我创建了一个与数据库中的名称列表相匹配的自动完成功能。
我正在使用的数据库包含大量带有特殊字符的名称,但最终用户很可能会使用这些名称的英文等效项进行搜索,例如Bela Bartok
对应 Béla Bartók
,Dvorak
对应 Dvořák
等。目前,进行英语搜索不会返回任何结果。
我遇到过一些帖子,说解决这个问题的方法是将 MySQL 排序规则更改为 utf8(我已经这样做了,但没有成功)。
我认为这可能是因为我使用了utf8_unicode_ci
,但是能够得到我想要的结果的是utf8_general_ci
。但后者的问题是所有评论都说不再使用它。
有谁知道如何解决这个问题吗?
最佳答案
如果您知道特殊字符列表以及简单英语中的等效字符是什么,则可以执行以下操作:
- 小写字符串
- 将字符替换为等效的小写字母
- 搜索“简单英语”列
您将需要使用 MySQL 的全文搜索来搜索文本或提出一个自行开发的解决方案来处理该问题。
关于MySQL字符串与特殊字符的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31987985/