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

时间:2013-09-04 14:33:41

标签: mysql arabic

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

SELECT 'الجنة' ='الْجِنَّةِ' COLLATE utf8_unicode_ci ;

此查询返回false

SELECT 'الجنة' LIKE '%الْجِنَّةِ%' COLLATE utf8_unicode_ci ;

我怎么能让后者返回true?谢谢。

2 个答案:

答案 0 :(得分:4)

我想你想阅读MATCH ... AGAINST ...处理“Natural Language Full-Text Searches

我将mysql.com提供的示例加载到sql小提琴中,稍微修改它以包含您的阿拉伯字符串,并且它按预期工作。

请在此处查看我的平方英尺: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);

答案 1 :(得分:3)

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