在mysql中搜索具有变音符号的阿拉伯语单词

Ess*_*sry 5 mysql arabic

让我的问题变得简单,任何人都知道为什么这个查询返回true

SELECT '?????' ='??????????' COLLATE utf8_unicode_ci ;
Run Code Online (Sandbox Code Playgroud)

而此查询返回false

SELECT '?????' LIKE '%??????????%' COLLATE utf8_unicode_ci ;
Run Code Online (Sandbox Code Playgroud)

我怎么能让后来的回归真呢?谢谢 .

All*_*One 5

我想您想阅读 MATCH... AGAINST... 以处理“自然语言全文搜索

我将 mysql.com 给出的示例加载到 sql fiddle 中,稍微修改它以包含您的阿拉伯字符串,它按预期工作。

在此处查看我的 sqlfiddle:http ://sqlfiddle.com/#!2/92317/1

更新答案以包括 ASKER 添加的其他参数

(现在使用 BOOLEAN MODE 并定义 CHARSET 和 COLLATION)

由@Nyran91 更新 sqlfiddle:http ://sqlfiddle.com/#!2/4a7004/3

CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
body TEXT,
FULLTEXT (title,body)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


INSERT INTO articles (title,body) VALUES
('?????????? DCKIEW', 'DAVADV ?????????? AVADV')


SELECT * FROM articles
WHERE MATCH (title,body)
AGAINST ('?????' IN BOOLEAN MODE);
Run Code Online (Sandbox Code Playgroud)

  • 只有在比较 الْجِنَّةِ/الْجِنَّةِ 或 الجنة/الجنة 时,您的答案才有效。但是谢谢你,我编辑了你的查询和 db sql 让它按我想要的方式工作。我会在一分钟内发布修改后的答案。 (2认同)

Ess*_*sry 5

这里我修改了 AllInOne 的 sqlfiddle 使其工作:http ://sqlfiddle.com/#!2/4a7004/3
更改NATURAL LANGUAGE MODEBOOLEAN MODE
并添加DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci到 db 结构。