私の質問を簡単にするために、誰でもこのクエリが true を返す理由を知っています
SELECT 'الجنة' ='الْجِنَّةِ' COLLATE utf8_unicode_ci ;
このクエリは false を返しますが、
SELECT 'الجنة' LIKE '%الْجِنَّةِ%' COLLATE utf8_unicode_ci ;
そして、どうすれば後で true を返すことができますか? ありがとう 。
ここで、動作させるために変更した AllInOne の sqlfiddle: http://sqlfiddle.com/#!2/4a7004/3
を
変更NATURAL LANGUAGE MODE
し、db 構造にBOOLEAN MODE
追加しました。DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
「自然言語全文検索」の処理については、MATCH... AGAINST... を読みたいと思います。
mysql.com で指定された例を sql フィドルにロードし、アラビア語の文字列を含めるように少し変更したところ、期待どおりに機能しました。
ここで私の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);