gpt4 book ai didi

MySQL 变音符号不敏感搜索(阿拉伯语)

转载 作者:可可西里 更新时间:2023-11-01 08:15:46 28 4
gpt4 key购买 nike

我在使用阿拉伯语文本进行变音符号不敏感搜索时遇到问题。

我已经为相关表格测试了多种设置:utf8 和 utf16 编码以及 utf8_general_ci、utf16_general_ci 和 utf16_unicode_ci 中的归类。

搜索适用于 åä 特殊字符。即:

select * from test where text like '%a%'

将返回文本为 a、å 或 ä 的列。但它不适用于阿拉伯变音符号。即,如果文本是 بِسْمِ 并且我搜索 بسم,我没有得到任何匹配项。

有什么想法可以通过吗?

真正的用法稍后将是 PHP(搜索功能),但在将其移植到 PHP 之前,我直接在 MySQL 数据库中工作只是为了测试。

(来自评论)

CREATE TABLE test (
↵ id int(11) unsigned NOT NULL AUTO_INCREMENT,
↵ text text COLLATE utf8_unicode_ci,
↵ PRIMARY KEY (id)↵
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

最佳答案

SHOW COLLATIONS; 查看可用的排序规则。在我的版本中,我没有看到任何看起来适合阿拉伯语的内容。但是,utf8_unicode_ci 似乎可以进行您想要的折叠。这是一个简单的尝试方法:

SELECT 'بِسْمِ' = 'بسم' COLLATE utf8_unicode_ci;

我得到的结果是 1(真),这意味着它们被认为是相等的。使用 utf8_general_ci 返回 0,表示不相等。

然后将您的字段声明为 VARCHAR(...)(或 TEXT)CHARACTER SET utf8 COLLATE utf8_unicode_ci;对于 utf8mb4 也是如此。

要构建您自己的归类(并提交以包含在未来的版本中),请参阅 http://dev.mysql.com/doc/refman/5.6/en/adding-collation.html

关于MySQL 变音符号不敏感搜索(阿拉伯语),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28863402/

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