6

为了使我的问题简单,任何人都知道为什么此查询返回 true

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

虽然此查询返回 false

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

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

4

2 回答 2

5

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

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

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

更新答案以包括由提问者添加的其他参数

(现在使用 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);
于 2013-09-05T00:29:53.263 回答
5

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

于 2013-09-05T11:21:27.387 回答