بسم الله الرحمن الرحيم
وصف المشكلة :-
عند البحث داخل قاعدة البيانات ( Mysql ) وجد أنها لا تفرق بين بعض الأحرف العربية ، ولقد تم إختبار لغة ( PHP ) في دعمها للغة العربية والبحث في نص معين داخل اللغة لم تحدث أي مشاكل وتبين أن هناك مشكلة مع اللغة العربية في قاعدة البيانات نفسها . وقد تم إختبار قاعدة البيانات لوحدها فوجد أن قاعدة البيانات مثلاً لا تفرق بين الأحرف ( أ - ل - م ) وتتعامل معها كأنها حرف واحد وبهذا يزيد مجال البحث ولا ترجع القيمة السليمة . مثال ذلك :-
عند البحث عن كلمة "ألم" بالعبارة التالية :
"SELECT * FROM `words` WHERE word='ألم'";
تقوم قاعدة البيانات بالبحث وإرجاع القيم التالية إن وجدت "أأأ" و "أأم" و "أأل" و "أمأ" و "أمم" و "أمل" و "ألأ" و "ألم" و "ألل" و "مأأ" و "مأم" و "مأل" و "ممأ" و "ممم" و "ممل" و "ملأ" و "ملم" و "ملل" و "لأأ" و "لأم" و "لأل" و "لمأ" و "لمم" و "لمل" و "للأ" و "للم" و "للل"
وهكذا في جميع حالات البحث لنتائج البحث التي تم إرجاعها يتم إرجاع الكلمة الأولى كأن تبحث على كلمة "أمل" فتكون كلمة "ألم" ضمن النتائج المرجعه .!!!
. وعند البحث أكثر وأكثر وجدت النتيجة التالية :-
لا تفرق قاعدة البيانات ( Mysql ) بين الحروف التالية وتتعامل معها كحرف واحد :-
( أ - ل - م )
( إ - ه )
( ا )
( ب - ت - ث )
( ج - ح - خ - د - ي )
( ذ )
( ر )
( ز - س - ش - ص )
( ض )
( ط )
( ظ - ع - غ )
( ف )
( ق )
( ك )
( ن - و )
وهذا يسبب مشكلة كبيرة عند البحث باللغة العربية فمثلاً عند البحث عن كلمة "صلاة" تقوم لغة ( PHP ) بإرسال عبارة الـ ( SQL ) إلى قاعدة البيانات وترجع قيم كثيرة من قاعدة البيانات لا يريدها الباحث أصلاً .
أخوكم شوقي .
ملاحظة : تم إرفاق ملف sql لتجربة البحث عن كلمة "ألم" .

