6

私の質問を簡単にするために、誰でもこのクエリが true を返す理由を知っています

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

このクエリは false を返しますが、

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

そして、どうすれば後で true を返すことができますか? ありがとう 。

4

2 に答える 2

5

ここで、動作させるために変更した AllInOne の sqlfiddle: http://sqlfiddle.com/#!2/4a7004/3
を 変更NATURAL LANGUAGE MODEし、db 構造にBOOLEAN MODE
追加しました。DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

于 2013-09-05T11:21:27.387 に答える
5

「自然言語全文検索」の処理については、MATCH... AGAINST... を読みたいと思います。

mysql.com で指定された例を sql フィドルにロードし、アラビア語の文字列を含めるように少し変更したところ、期待どおりに機能しました。

ここで私の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);
于 2013-09-05T00:29:53.263 に答える