اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

قام بنشر (معدل)

الإخوة الكرام .. موضوع البحث مع تجاهل التشكيل ونحوه كعلامات الترقيم والأقواس والأرقام، مع المساواة بين أشكال الهمزة ونحوها (ا - أ – إ – آ & ة – ه & ي - ى)

هذا الموضوع طُرق في عدة مشاركات، هذه بعضها:

حل جذرى للبحث في الكلمات ذات التشكيل والهمزات والتاءات والياءات

 حذف و ازالة الحركات و التشكيل من النص

ظهورالهمزة والتاء المربوطة عند عملية البحث

فكرة بحث ذكية (Search) الحروف ( ة ه ا إ آ أ ي ى )

وحاصل ما قرأته واطلعت عليه في هذا الموضوع، أن هناك طريقتين لحل هذه المشكلة في البحث:

1- الطريقة الأولى: استخدام أكواد خاصة لحذف التشكيل وغيره من النص عند البحث

2- الطريقة الثانية: إنشاء حقل خاص للبحث محذوف التشكيل

* * *

الطريقة الأولى: استخدام أكواد خاصة لحذف التشكيل وغيره من النص والمساواة بين الهمزات ونحوها عند البحث

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

(1) كود واحد يؤدي المهمتين (mod_Tshkeel) حذف ما يراد تجاهله (التشكيل ونحوه) والمساواة بين الأحرف المتناظرة (أاإآ – ة ه – ي ى)

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

لذلك لابد أولا من استخدام كود آخر (mod_searchtext) للمساواة بين الأحرف المتناظرة في مربع البحث أيضا قبل طلب كود البحث، وعندها يعمل كود البحث بشكل جيد

لأنك مهما كتبت في مربع البحث المعد للكتابة (أيوب – ايوب – إيوب - آيوب) فستصبح (ايوب) وعندها سيجدها في نص البحث

* وهذه الطريقة في الملف المرفق في زر (بحث بالكود)

(2) كود لحذف التشكيل وعلامات الترقيم والأرقام، وهو الكود السابق (mod_Tshkeel) أو يمكن اختصاره بحيث يبقي على الهمزات والأحرف المتناظرة كما هي

وكود آخر (mod_hmzat) للمساواة بين الأحرف المتناظرة، يعمل بشكل مختلف، يعمل في مربع البحث نفسه ليجعل البحث عن الكلمة بجميع احتمالاتها، فعند البحث عن (أيوب)، فهذا الكود يجعل البحث عن ([أاإآ]يوب) فسيجدها كيفما كتبت

* وهذه الطريقة في زر (بحث بالكودين)

تقييمي لهذه الطريقة بفرعيها: تؤدي المطلوب لكنها بطيييييئة بشكل ملحوظ في الجداول التي تحوي نصوصا كثيرة، كما هو الحال عندي ..

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

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

* * *

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

أما بخصوص الأحرف المتناظرة (أاإآ – ة ه – ي ى) فأمامنا طريقتان كما سبق:

(1) استبدالها أيضا في نفس الكود (Q_nass2)، مع استخدام كود (mod_searchtext) لاستبدالها في مربع البحث قبل طلب كود البحث.

* وهذه الطريقة في زر (بحث في nass2)

(2) عدم استبدالها والاكتفاء بحذف التشكيل ونحوه (Q_nass3) واستخدام الكود المتقدم (mod_hmzat) الذي يجعل البحث عن كافة احتمالات الكلمة.

* وهذه الطريقة في زر (بحث في nass3)

وهذه الطريقة - بفرعيها - سريعة وتؤدي المطلوب، لكن بالنظر إلى أن حقل النص (NASS) المراد البحث فيه عندي عرضة للتحديث يوميا، فلا بد من تحديث نص البحث (nass2 & nass3) عند تحديث النص الرئيسي (NASS)، باستدعاء الكود (mod_nass2 ، mod_nass3) بعد التحديث في نموذج (FRM1) .. والنتيجة جيدة بحمد الله، ولم أجابه مشاكل عند التحديث وتغيير البيانات ولا حتى عند إضافة أو حذف سجل.

 

ونتيجة كل ما سبق، أنني أنوي استخدام الطريقة الأولى في الجداول الفرعية الصغيرة [mod_Tshkeel & mod_searchtext]، والطريقة الثانية [mod_nass2 & mod_searchtext] في الجدول الرئيسي

 

إلا إذا كان عند أهل الاختصاص رأي آخر .. فهذه النتيجة التي توصلت لها هي نتاج بحثي وفهمي، ولست من أهل الاختصاص

فهل توجد طريقة أخرى لتجاهل التشكيل ونحوه لا تسبب بطئا في عملية البحث، كما هو الحال في الكود الثاني للأحرف المتناظرة والذي يعمل في مربع البحث نفسه وليس في نص البحث

أم أن النتيجة التي توصلت لها هي أفضل المتاح بالنظر لطبيعة الجداول التي عندي ؟

 

هذا .. وكل ما سبق يتعلق بالشق الأول من الموضوع، يبقى الشق الثاني (أثر هذه الأكواد على تلوين النتائج)

فإن تلوين نتائج البحث مهم لي بالنظر لطول النصوص .. لكن المشكلة في الطريقتين كلتيهما، أن كود التلوين الذي وجدته بعد بحث في هذه المشاركة

 

تلوين نتيجة البحث

تلوين نتائج البحث وإظهارها في أول سطر

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

فعند البحث عن (محمد) فلن يتم تلوين (مُحَمد) ولا (محمدٌ) .. .. وكذلك الحال إذا طلبت البحث عن (أيوب) وكانت في النص (ايوب) لن يلونها .. وكذلك عند البحث عن ( بن عرفة) لن يلونها إذا كانت في النص (  [بن] عرفة)

فهل يمكن أن نجعل كود التلوين يعمل على الكلمات التي أخرجها كود البحث، وليس على الكلمة التي كتبت في مربع البحث .. أو أي طريقة أخرى لحل هذه المشكلة ؟؟

 

وفي الملف المرفق خلاصة تجاربي المتواضعة في هذا الموضوع (نموذج:  Frm_searsh) وأنا أطمع بنصائح وتجارب أهل الخبرة والاختصاص .. والله الموفق.

search 01.rar

تم تعديل بواسطه nssj
  • Like 1
  • 2 weeks later...
قام بنشر
في ٤‏/١١‏/٢٠٢١ at 14:20, nssj said:

هل توجد طريقة أخرى لتجاهل التشكيل ونحوه لا تسبب بطئا في عملية البحث .. .. ..

في ٤‏/١١‏/٢٠٢١ at 14:20, nssj said:

هل يمكن أن نجعل كود التلوين يعمل على الكلمات التي أخرجها كود البحث، وليس على الكلمة التي كتبت في مربع البحث .. .. ..

للرفع

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

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

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information