mysql 多语言搜索的一个困惑,麻烦兄台给点思路,头大了

2020-04-29 17:06:37 +08:00
 qwe13579

直接用例子来说明,比如有下面这个表

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则只有第二行结果出现在结果中。

请问大家这种需求要怎么实现啊?我基本功不扎实,请大家给点解决方案和思路。老板看同行的网站完美解决了这个问题。疫情期间不想失业啊、啊、啊、、

1704 次点击
所在节点    MySQL
2 条回复
qwe13579
2020-04-29 20:07:21 +08:00
这种情况还多 比如 比如 a 和á、e 和é、i 和í 。 有办法区别吗
qwe13579
2020-05-02 23:42:27 +08:00
一直没人回答,只能自己回答一下,给有缘人一点帮助。这是一个大小写不区分,但重音(变音)区分的问题。有两个解决办法:1 、直接上 mysql8 完美解决 2 、如果由于各种原因无法升级,可以修改 mysql5.7 源文件的校对函数,然后重新编译,但感觉很繁琐而且容易出错

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/667337

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX