النتائج 1 إلى 13 من 13

الموضوع: تلميحات مفيدة للبحث في MySQL باللغة العربية

  1. #1
    عضو نشيط
    تاريخ التسجيل
    May 2002
    المشاركات
    137

    تلميحات مفيدة للبحث في MySQL باللغة العربية



    بناء على طلب الكثيرين ممن تواجههم هذه التساؤلات حال استخدامهم لتعليمات SQL في التعامل مع قواعد بيانات باللغة العربية كتبت فيما يلي ما حضر إلى ذهني من التلميحات التي أعتقد أنها ستكون مفيدة:

    - لن أقوم هنا بشرح طريقة استخدام SQL، لمن يرغب في معرفة لغة SQL للتعامل مع قواعد البيانات أرجو زيارة الموقع http://www.mysql.com/doc/en/index.html (فيما يخص MySQL)

    تأسيس الجدول ليناسب اللغة العربية
    حروف اللغة العربية تعتبر من تلك الرموز الغير قياسية والتي تتجاوز قيمتها الرقمية في جدول ASCII الرقم 127، وبالتالي فإنها لا تعامل معاملة الحروف الهجائية مثلها مثل حروف اللغة الإنجليزية، لذلك فإن تأسيس جدول قاعدة بيانات يجب أن يتضمن تحديد صفة الثنائية BINARY للحقول التي ستحتوي على بيانات باللغة العربية، وإن كان ذلك غير ممكن لسبب ألآخر (كأن تكون الجداول قد تم تأسيسها فعلاً) فيمكن الاطلاع على التلميحات التالية والتي يمكن بواسطتها تجاوز هذه المشكلة.

    ترتيب بيانات باللغة العربية أثناء العرض
    يواجه العديد هذه المشكلة أثناء استخدامهم لتعليمة ORDER BY في ترتيب بيانات باللغة العربية (في جداول لم يتم استخدام صفة الثنائية) حيث أنهم يفاجؤن بظهور ترتيب الصفوف بشكل غير متوقع، حيث تظهر بعض حروف اللغة العربية في غير ترتيبها الصحيح، والسبب في ذلك كما ذكرنا من قبل أن العمود المستخدم لم يتصف بالثنائية BINARY، لذلك فإننا يجب أن نقوم بالتخصيص أثناء الترتيب كما في المثال التالي:
    كود PHP:
    SELECT FROM table ORDER BY BINARY field 
    حيث ان اسم الجدول table والحقل الذي يتم الترتيب بدلالته هو field، وقد تمت إضافة BINARY قبله حتى يتم تنبيه MySQL أن بيانات الحقل يجب أن تعامل معاملة بدلالة قيمتها الرقمية وليست كحروف.
    وفيما يلي مثال آخر لترتيب البيانات بدلالة حقل من نوع آخر (تاريخ مثلاً) وحقل نص:
    كود PHP:
    ٍSELECT FROM table ORDER BY datefieldBINARY title 
    حيث أن اسم الجدول table وحقل datefield حقل يمثل التاريخ، وحقل title حقل يمثل نص (باللغة العربية)

    البحث عن كلمة أو جزء من كلمة
    من المعروف أن معيار البحث للتساوي = يقوم بتصفية (فلترة) البيانات المعروضة بحسب الصيغة المذكورة، لكنها أيضاً ستواجه خللاً إذا كان أحد معايير البحث يمثل باللغة العربية، لذلك وجب أيضاً استخدام BINARY، كما في المثال التالي:
    كود PHP:
    ٍSELECT FROM table WHERE BINARY field 'كلمة' 
    كذلك الحال عند الرغبة في البحث باستخدام LIKE:
    كود PHP:
    SELECT FROM table WHERE BINARY field LIKE '%كلمة%' 
    البحث متعدد الشروط:
    يمكن استخدام LIKE و RLIKE لعمل بحث متعدد الشروط، وسأقوم فيما يلي بذكر بعض الأمثلة الشائعة، مع شرح مقتضب لكل منها.
    - الرموز المستخدمة مع LIKE
    يمكن استخدام الرمز _ للدلالة على حرف واحد مجهول، ففي المثال التالي:
    كود PHP:
    SELECT FROM table WHERE BINARY field LIKE '_حمد' 
    تطابق معايير المثال كلاً من الكلمات التالية: أحمد ، احمد ، محمد ، نحمد ، بحمد
    يمكن استخدام الرمز % للدلالة على حرف أو عدد من الحروف أو حتى لا شيء، كما في الأمثلة التالية:
    كود PHP:
    للبحث عن الأسماء التي تبدأ بحرف الألف وتنتهي بحرف الميم
    SELECT 
    FROM table WHERE BINARY field LIKE 'أ%م'
    ويطابق البحث كلاً من الكلمات التاليةأم، أمام، أنغام،...

    للبحث عن الأسماء التي الاسم الأخير فيها محدد
    SELECT 
    FROM table WHERE BINARY field LIKE '% محمد'
    ويطابق البحث كلاً من الأسماءعلي محمد، أحمد عبدالله محمد،...

    البحث عن وجود كلمتين داخل مقطع من البيانات دون شرط تقاربهما:
    SELECT FROM table WHERE BINARY field LIKE '%الكلمة الأولى%الكلمة الثانية%' 
    وهكذا فإن الرمز % يستخدم بدلاً عن كمية مجهولة من الحروف

    - عبارة RLIKE تستخدم للمقارنة باسلوب التعابير القياسية Regular Expressions باستخدام الرموز بشكل مشابه لطريقة pcre_match، يمكن معرفة المزيد عنها في http://www.mysql.com/doc/en/Regexp.html
    وتعتبر RLIKE أفضل من LIKE في حالة البحث عن عبارات بشروط معقدة كالرغبة في استثناء رموز التشكيل مثلاً.

    البحث باستثناء علامات التشكيل
    نحتاج في بعض الأحيان إلى البحث عن عبارة داخل بيانات يحتمل وجود علامات التشكيل فيها، وبذلك لا يمكننا تنفيذ عبارة LIKE لأن التطابق غير تام بالنسبة للكلمة الواحدة، وهذا هو ما يدفعنا إلى استخدام REGEXP أو RLIKE لتنفيذ بحث يناسبنا.
    والواقع أن استخدام REGEXP معقد كثيراً، ولكنني سأذكر هنا كيف بإمكاننا استخدامها للبحث عن عبارة باستثناء رموز التشكيل:
    . هذا الرمز يقابل تماماً الرمز _ في LIKE لذلك سنستخدمه في بداية ونهاية نموذج البحث
    * هذا الرمز يعني أي عدد من الرموز وسنستخدمه بجانب الرمز . ليماثل % في LIKE ، وكذلك سنستخدمه مع مربع نطاق الرموز لنحدد أننا نتوقع وجود أي عدد من رموز التشكيل
    [...] سنستخدم هذا الشكل لتحديد نطاق رموز نتوقع وجودها أثناء البحث وهي هنا رموز التشكيل
    سأستخدم هنا علامات التشكيل َ و ُ و ِ
    فبالتالي فإن مربع نطاق الرموز سيكون بهذا الشكل [َُِ] (قد لا يكون واضحاً أن علامات التشكيل الثلاثة بين القوسين)
    لذلك فإنني عندما أريد البحث عن كلمة ذهب مع توقعي وجود الكلمة مشكلة بالفتحة والضمة والكسرة فإنني سأقوم بعمل هذا:
    كود PHP:
    SELECT FROM table WHERE field RLIKE BINARY '.*ذ[َُِ]*ه[َُِ]*ب.*' 






    __________________
    visualmind (at) php.net
    أعتذر كثيراً عن غيابي من المشاركات والذي لن يطول أكثر إن شاء الله.
    VisualMind غير متواجد حالياً


  2. #2
    عضو نشيط
    تاريخ التسجيل
    Jul 2002
    المشاركات
    181


    ممتاز الله يخليك لنا ذخر وبصراحه محتاج شروح في http://smartemplates.php4arab.info/ فهل تعرف مكان احصل فيه شروح وتمارين عملية ؟





    __________________
    ** الحمدلله **
    abu_salman غير متواجد حالياً

  3. #3
    عضو نشيط
    تاريخ التسجيل
    May 2002
    المشاركات
    137


    شكراً لاهتمامك أخي abu_salman.

    بالنسبة لبرنامج SmarTemplates ، كنت قد أصدرت البرنامج على عجل مؤخراً ولم أتمكن من كتابة دروس وشروح أخرى غير تلك التي في الموقع:
    http://smartemplates.php4arab.info/?lang=arabic
    http://smartemplates.php4arab.info/d...hp?lang=arabic
    ولكني أنوي أن أضع درساً مفصلاً قريباً إن شاء الله.

    يمكنك حالياً أن تسجل في القائمة البريدية التي في الموقع أو تكتب استفساراتك في منتدى البرنامج https://sourceforge.net/forum/?group_id=69260
    وسوف أقوم بالرد عليها بإذن الله.





    __________________
    visualmind (at) php.net
    أعتذر كثيراً عن غيابي من المشاركات والذي لن يطول أكثر إن شاء الله.
    VisualMind غير متواجد حالياً

  4. #4
    عضو نشيط جدا
    تاريخ التسجيل
    Dec 1999
    المشاركات
    437


    صراحة ، شكراً من القلب. لم اتمكن بعد من اختبار الطريقة لكني ان شاء الله متأكد انها ستعمل

    أتمنى ان تتحفنا دائماً بالمميز. اخي الفاضل ، ان ماقدمته لشيء رائع ومميز ويبشر بالخير

    اتمنى لك التوفيق الدائم والى الأمام دائماً ( وللمسلمين )

    تحياتي وتقديري





    T_zone غير متواجد حالياً

  5. #5
    عضو نشيط
    تاريخ التسجيل
    Sep 2002
    المشاركات
    53


    مشكور يا اخى على الشرح الرائع





    __________________
    إستخدم ملفك الخاص لكتابة توقيعك
    server غير متواجد حالياً

  6. #6
    عضو نشيط
    تاريخ التسجيل
    Apr 2002
    المشاركات
    177

    لن اقول غير كلمة واحده



    ما شاء الله تبارك الله بك وبجميع الاعضاء





    kii75sy غير متواجد حالياً

  7. #7
    عضو فعال جدا
    تاريخ التسجيل
    Dec 2000
    المشاركات
    2,697


    السلام عليكم
    درس شيق و مفيد لا حرمك الله الأجر

    هل لي بسؤال ؟!!

    الآن على إفتراض أن لدي بالبرنامج صفحة البحث
    طبعاً ستظهر نتيجة البحث عبارة عن أسماء المواضيع
    ماذا لو نريد حين الضغط على إسم الموضوع في نتائج البحث يدخلنا لصفحة الموضوع مع جعل الكلمة التي تم البحث عنها بلون مخالف
    أحمر مثلاً
    كما هو في برنامج المنتدى بسوالف

    ؟؟؟؟؟





    رضا غير متواجد حالياً

  8. #8
    عضو نشيط
    تاريخ التسجيل
    Jul 2001
    المشاركات
    254


    جزاك الله خير اخوي ..





    __________________


    :.. [ موسوعة زيزووو للصور ] ..:

    موسوعة بالعربية

    متخصصة في الصور الفوتوغرافية

    مقسمة بطريقة موضوعية


    www.zizooo.ws

    ziz غير متواجد حالياً

  9. #9
    عضو نشيط جدا
    تاريخ التسجيل
    Jan 2002
    المشاركات
    581


    سلام

    والله بالفعل هذا الحل كان مجدي جداً معي
    حيث ان قاعدة البيانات 503155 جدول لأرقام الهاتف

    لكن أحب أن أناقش بعض الأمور الأخرى في نفس الموضوع ولكن حالياً لا يوجد الوقت الكافي .

    سلام





    __________________
    President Bashar Al Assad
    SyrNet.net
    WSyria.com , Comming Soon
    Syria Nobles
    Al Golan
    Syrian Computer Society
    Ministry of Tourism - Syria
    E-mail : syria@wsyria.com
    ---------------------------------------------------
    بحبك ... وما بحب حدا غيرك يا سوريا
    كلنا نشهد بأن لا اله إلا الله الواحد الأحد
    Syria com غير متواجد حالياً

  10. #10
    عضو نشيط
    تاريخ التسجيل
    Jul 2002
    المشاركات
    100


    ماذا لو نريد حين الضغط على إسم الموضوع في نتائج البحث يدخلنا لصفحة الموضوع مع جعل الكلمة التي تم البحث عنها بلون مخالف
    أول شي أضف إلى رابط الموضوع في نتيجة البحث متغير يحمل كلمة البحث .. مثلاً :
    filename.php?articleID=22&hightlight=searchword
    و داخل الملف firlename.php اضف الكود هذا :
    كود PHP:
    $article str_replace("$hightlight""<font color='#FF0000'>$hightlight</font>"$article); 
    بحيث المتغير article يحتوي على نص المقالة ..

    ان شاء الله يفيدك





    __________________
    mymdb@hotmail.com
    mdb غير متواجد حالياً

  11. #11
    عضو نشيط
    تاريخ التسجيل
    May 2002
    المشاركات
    137


    الإخوة ، T_zone ، server ، kii75sy ، رضا
    العفو وإن شاء الله يكون الموضوع أفادكم..

    أخي Syria com، تفضل بالنقاش في أي وقت تريد

    أخ رضا، بالنسبة لسؤالك هو خارج عن الموضوع هنا قليلاً، وقد أجاب عنه mdb مشكوراً





    __________________
    visualmind (at) php.net
    أعتذر كثيراً عن غيابي من المشاركات والذي لن يطول أكثر إن شاء الله.
    VisualMind غير متواجد حالياً

  12. #12
    عضو فعال جدا
    تاريخ التسجيل
    Dec 2000
    المشاركات
    2,697


    mdb ، VisualMind .. نفعنا الله بعلمكم و لا حرمكم الله الأجر ..





    رضا غير متواجد حالياً

  13. #13
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2001
    المشاركات
    867


    ارفع هذا الموضوع للفائده

    اكثر من نصف ساعه وانا ابحث عنه حتى وجدته

    موضوع رائع وخصوصا للمبرمجين





    __________________


    موقع دبوريه - عرب 48: http://www.dabburiya.net/index.php

    منتدى دبوريه - عرب 48: http://www.dabburiya.net/forums/index.php

    hamudi غير متواجد حالياً





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض