V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
qwe13579
V2EX  ›  MySQL

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

  •  
  •   qwe13579 · 2020-04-29 17:06:37 +08:00 · 1755 次点击
    这是一个创建于 1671 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    2 条回复    2020-05-02 23:42:27 +08:00
    qwe13579
        1
    qwe13579  
    OP
       2020-04-29 20:07:21 +08:00
    这种情况还多 比如 比如 a 和á、e 和é、i 和í 。 有办法区别吗
    qwe13579
        2
    qwe13579  
    OP
       2020-05-02 23:42:27 +08:00
    一直没人回答,只能自己回答一下,给有缘人一点帮助。这是一个大小写不区分,但重音(变音)区分的问题。有两个解决办法:1 、直接上 mysql8 完美解决 2 、如果由于各种原因无法升级,可以修改 mysql5.7 源文件的校对函数,然后重新编译,但感觉很繁琐而且容易出错
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5370 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 01:18 · PVG 09:18 · LAX 17:18 · JFK 20:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.