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

الموضوع: مشكلة البحث عن نص في قاعدة البيانات

  1. #1
    عضو نشيط
    تاريخ التسجيل
    Sep 2006
    المشاركات
    32

    Smile مشكلة البحث عن نص في قاعدة البيانات



    السلام عليكم جميعا يا أعضاء هذا المنتدى الغالي

    بعد طول عناء وبحث شاق لم أحصل على ما ابتغي

    مشكلة البحث عن نص مشابه في قاعدة البيانات

    من المعروف لو انك بحثت عن كلمة او بعض الكلمات بواسطة

    كود PHP:
    Select From table  Where field  LIKE "%$d%" 
    سوف تحصل على مبتغاك

    لكن لو انك تبحث عن نص مماثل ؟! فكيف تستطيع ذلك ؟!

    وكذلك مشكلة البحث عن كلمات مشكلة أن إنك تبحث عن "محمد" وفي القاعدة مسجل بـ "مُحمد"

    ارجو المساعدة في هذه المشكلة

    ورحم الله والديكم

    وشكرا لكم


    تحياتي
    المصمم الذهبي





    __________________
    المصمم الذهبي

    www.golden-designer.com

    goldendes@gmail.com


  2. #2
    عضو نشيط جدا
    تاريخ التسجيل
    Sep 2006
    المشاركات
    547


    يمكنك أن تستخدم بعض مما توفره مكتبة PHP واللغة العربية لهذه الغاية:

    PHP and Arabic Language - Index

    وتحديدا ما يوفره الكلاس ArQuery:

    Docs for page ArQuery.class.php

    أما الصفحة التالية فتعرض مثال حي لتطبيق هذه المكتبة في وظيفة البحث ضمن سجلات قاعدة البيانات:

    Arabic Query Class

    أخيرا الصفحة التالية تتضمن كافة الدوال والتوابع المتضمنة في الكلاس الخاص بوظيفة البحث وبارامتراتها وطبيعة القيم المعادة:

    Docs For Class ArQuery

    أخيرا يمكنك استعراض بقية الوظائف المتاحة في هذه المكتبة من خلال صفحة الأمثلة الحية التالية:

    PHP and Arabic Language - Features

    آمل أن يكون هذا ما تبحث عنه





    __________________
    خالد الشمعة - Khaled Al-Shamaa
    PHP and Arabic language

  3. #3
    عضو فعال
    تاريخ التسجيل
    Jul 2008
    المشاركات
    1,109


    اتفضل اخي جرب وقلي ايه ظهر عندك

    كود PHP:

     $id
    ="mohamed";
      
    $sql=mysql_query("select * from table  Where name  LIKE '%$id%'"); 






    __________________
    ســـــــبحان الله وبـــــــــحمده *سبـــــــــــحان الله العظيم
    لطلب البرمجة فقط
    helal-egypt@hotmail.com

  4. #4
    عضو نشيط
    تاريخ التسجيل
    Sep 2006
    المشاركات
    32


    مشكورين على الرد وما قصرتم

    مشكور اخي دي ان اس ايرور وجزاك الله خيرا ورحم الله والديك وما قصرت

    اممم

    حصلت حل مبدئي بعد بحث شاق

    اخي محمد هلال

    كودك بالفعل شغال

    لكن المشكلة اني مستخدم ajax بطريقة get ومن كذا القصيدة لمن تروح get يظهر السطر الأول منها فقط وليس الكل

    واحين قاعد ابحث عن حل لهذه المشكلة

    أما الحل

    لمشكلة التشكيل والحركات فلقد وجدت ذلك وعدلته فصار الكود هاللون

    كود PHP:
    <?
    $s 
    $_GET[poem_view];
     
    $find_str$s
    $search_str="[.]*"
    for(
    $i=0;$i<strlen($find_str);$i++){ 
    $search_str.=substr($find_str,$i,1) . '[ّ|َ|ً|ُ|ٌ|ِ|ُ|ْ|ـ|ُ]*'

    $search_str.="[.]*"
    $query mysql_query("SELECT * FROM poems WHERE poem_view regexp '$search_str' order by id asc limit 10");
    $resultnum mysql_num_rows($query); 
     
    if(
    $resultnum <= 0

    $SF->msg("لا توجد نتائج");
    }
    else

     
    $SF->msg("توجد نتائج لوجود قصيدة مشابهة");
    $i =1;
     
    while(
    $row mysql_fetch_array($query))
    {
    ?>
     
    <p align="center"><a target="_blank" href="poem-<?echo $row[id];?>.html">
    <?=$i;?><?echo $row[poem_title];?></a></p>
    <?
    $i
    ++;
    }
    }
    ?>
    اتمنى الفائد للجميع

    وكذلك

    لمن لديه حل لمشكلة الأجاكس وpost خل يطرحه


    تحياتي





    __________________
    المصمم الذهبي

    www.golden-designer.com

    goldendes@gmail.com

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


    على الرحب والسعة أخي الكريم، فيما يخص الحل الذي أشرت إليه فهو يعمل بشكل جيد حينما يكون حجم قاعدة البيانات صغيرا (من حيث عدد السجلات) لكن الأمور ستزداد سوءا بكبر حجم قاعدة البيانات تلك خصوصا أنك تضيف التعابير النظامية الخاصة بحذف الحركات بعد كل حرف من أحرف الكلمة التي يتم البحث عنها.

    أحد الحلول البديلة المقترحة، هي وجود حقل إضافي في جدول قاعدة البيانات تخزن به ذات محتويات الحقل المرغوب (في حالتك هذه هو poem_view) لكن بعد إزالة كل الحركات منها، وهو الحقل الذي سيتم إعتماده في عملية البحث، في حين أن البيانات المعروضة ستأتي من حقل poem_view النظامي الذي يتضمن التشكيل، هذه المقاربة تستخدم في نظام Drupal لإدارة المحتوى على سبيل المثال.

    نقطة أخيرة أود الإشارة لها، وهي تخص تحسين أداء حلقة for الموجودة في المثال الذي عرضته، حيث البديل الذي اقترحه عليك هو التالي:

    كود PHP:
    $max strlen($find_str);
    for(
    $i=0;$i<$max;$i++){ 
      
    $search_str.=$find_str[$i] . '[ّ|َ|ً|ُ|ٌ|ِ|ُ|ْ|ـ|ُ]*'







    __________________
    خالد الشمعة - Khaled Al-Shamaa
    PHP and Arabic language

  6. #6


    خذ نص القصيدة
    استخدم str_replace وقص منها كل الرموز الخاصة والتشكيل
    خزنها في قاعدة البيانات
    ولما تبحث ابحث بداخلها كما وضح الاستاذ DNSerror

    اما طريقتك التي استخدمتها فهي كارثة اخي





    __________________
    السيف أصدق أنباء من الكتب





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

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

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