直接用例子来说明,比如有下面这个表
id | title_en | title_tr
1 | sun | gün
2 | gun | tabanca
因为是多语言网站,title_en 、title_tr 保存着商品的英文标题和土耳其语标题,并且在这两个字段上创建了全文本索引。
现在有用户来搜索商品关键字 gun ,使用下列 sql 语句在数据库中查询相关商品,两行都会出现在结果集中
WHERE MATCH (title_en,title_tr) against ("gun" in boolean MODE)
另外一个用户搜索商品关键字 gün,同样两行都会出现在结果集中
WHERE MATCH (title_en,title_tr) against ("gün" in boolean MODE)
这样的结果与期望不符, 期望的结果是:搜索 gün 、Gün 、GÜN 等只有第一行出现在结果中;而搜索gun 、GUN 、GuN则只有第二行结果出现在结果中。
请问大家这种需求要怎么实现啊?我基本功不扎实,请大家给点解决方案和思路。老板看同行的网站完美解决了这个问题。疫情期间不想失业啊、啊、啊、、
1
qwe13579 OP 这种情况还多 比如 比如 a 和á、e 和é、i 和í 。 有办法区别吗
|
2
qwe13579 OP 一直没人回答,只能自己回答一下,给有缘人一点帮助。这是一个大小写不区分,但重音(变音)区分的问题。有两个解决办法:1 、直接上 mysql8 完美解决 2 、如果由于各种原因无法升级,可以修改 mysql5.7 源文件的校对函数,然后重新编译,但感觉很繁琐而且容易出错
|