gpt4 book ai didi

php - 执行不区分重音的全文搜索 MySQL

转载 作者:行者123 更新时间:2023-11-29 06:52:01 26 4
gpt4 key购买 nike

我目前正在为网站开发搜索功能。用户按名称搜索其他用户。对于名字带有重音符号的用户,我无法获得好的结果。

我在名称列上有一个全文索引,表的排序规则是 utf8_general_ci。

目前,如果有人注册该网站,并且有一个带有重音符号的名字(例如:Alberto Andrés),该名字将存储在数据库中,如下图所示:

Alberto Andrés

因此,如果我执行以下查询 SELECT * MATCH(name) AGAINST('alberto andres'),我会得到很多具有更好匹配分数的结果,例如 'Alberto'、'Andres'、'Andrés ' 最后,由于匹配分数较低,用户可能正在寻找 'Alberto Andrés' 的记录。

我可以做些什么来考虑重音记录当前存储在数据库中的方式?

谢谢!

最佳答案

在我看来,el Señor Andrés 的姓氏实际上存储正确。您向我们展示的渲染是一些非 UTF 应用程序破坏 UTF8 文本的方式。

如果您的表中还没有一大堆记录,您可以尝试对查询进行这种修改。全文(非 bool )模式在小数据集上的表现很奇怪。

SELECT *  
FROM TABLE
WHERE MATCH(name) AGAINST('alberto andres' IN BOOLEAN MODE)

你也可以试试

SELECT *  
FROM TABLE
WHERE MATCH(name) AGAINST(CONVERT('alberto andres' USING utf8))

只是为了确保您的匹配字符串与您的 MySQL 列在相同的字符集中。

关于php - 执行不区分重音的全文搜索 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14774474/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com