الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تعلم كيف تتجاهل التشكيل والهمزات عند البحث بالنصوص العربية في قواعد بيانات Sql

رائج
بدأه أبو اليسر في 8 نوفمبر 2006 · 43 رد · 21,368 مشاهدة · في قسم الدروس والمواضيع المتميزة
مشاركة: واتساب X فيسبوك تيليجرام
#26
أبو اليسر كتب:
السلام عليكم ورحمة الله..

حياك الله أخي 'السندبااد' وجزاك كل خير وأهلاً بك..

بالنسبة للغير ممكن أقصد استخدام طريقة العبارات الاعتيادية مع قواعد بيانات أكسس؛ أما تجاهل التشكيل فله أكثر من طريقة منها الطريقة المستخدمة في المكتبة الشاملة وهي أظن نفس التي وصلت إليها في سؤالك السابق ولكن المشكلة هو بطء هذه الطريقة لأنها تعتمد على الfor ومعالجة وفلترة كل سطر على حده.. ولهذا لو أردنا البحث في جميع كتب المكتبة الشاملة الإصدار الثاني كم ستكلفنا العملية من وقت؟

أما الأسلوب الذي تكلمت عنه هنا في عملية تجاهل التشكيل فسيضمن تقريباً السرعة نفسها التي تستغرق لتنفيذ أي استعلام بحث بدون تجاهل التشكيل وهذه هي الفائدة.

.........

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

Select * from mytbl where txtfld like '%txtsearch%'

والأسباب كثيرة منها أن هذه الأوامر لم تجهز لكي تتحمل نصوص كبيرة الحجم كما تقول مايكروسوفت وأنها تأخذ وقتاً طويلاً لتنفيذ عملية البحث خاصة في حال استخدام مخدم سيكول العادي المجاني..

والحلول الموجودة أيضاً كثيرة منها ما صنعته مايكروسوفت وبنت عليه محرك البحث live.com وهو استخدام ما يعرف بالفهرسة أو ما يسمى FullTextSearch مع قواعد بيانات MSSQL وهو فعلياً يسرع عملية البحث بشكل هائل وهذا يتضح من فكرته، ولكن المشكلة أننا إذا أردنا أن نستخدم FullTextSearch الذي صنعته مايكروسوفت فسنكون مضطرين لاستخدام سيرفر متقدم مثل ديفلوبر سيرفر أو غيره وحتى الأدفانس سيرفر لا يكفي حسب التجربة؛ والمشكلة تكمن في أن هذا السيرفر كبير الحجم يصل حجم الجزء المطلوب منه إلى 89 ميجا فيما أذكر كما أنه غير مجاني؛ وهذا يعيق انتشاره عبر النت كما يعطل انتشاره في الدول التي تراعي حقوق الملكية؛ عدا عن مشكلته الكبيرة في التنصيب وتعقيداته، مما يؤدي بنا إلى الفشل لو استخدمناه مع برامج المكتبات الإسلامية خاصة الخيرية منها.

الحل هو فهم آلية عمل هذه الخاصية وتطبيقها بصورة مناسبة لنا.

أسأل الله أن يوفقنا للخير والسداد وأن يستعملنا في طاعته وفي نصرة دينه، آمين..

والسلام عليكم ورحمة الله.

وعليكم السلام ورحمة الله وبركاته

ما شاء الله تبارك الله

أثريت الموضوع أخانا الحبيب أبو اليسر

كنا نتمنى لو كان هنالك مبرمجون إسلاميون يدعمون هذه التقنيات ويقومون بشرحها وتوضيحها

فالبرمجة الإسلامية بحاجة لها وخاصة وأن هنالك نشاط كبير في مجال الكتب والمكتبات الإلكترونية كما ترى

ولا أخفيك المواضيع في هذا المجال متواضعة جداً ولا تكاد تخدم إلاّ الأساسيات الأساسيات

الله المستعان

سأعمل على تطوير نفسي بهذا المجال بفضل الله ثم بفضل مثل هذه المواضيع وغيرها

ونتمنى منك أخ أبو اليسر أن لا تحرموننا من مخزونكم البرمجي الإسلامي ونسكم المميز في هذا المجال

فنحن بأشد الحاجة لذلك

بيّض الله وجهك وغفر لك ولوالديك وأكرمكم الفردوس الأعلى

فاعلم أنه لا إله إلا الله

#27

مشكور أخي زاد الله من علمك

واتقوا الله ويعلمكم الله

#28

السلام عليكم ورحمة الله

لقد تابعت باهتمام هذا الموضوع، أشكر كل المساهمين فيه

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

ولكم الشكر سلفا

وفقكم الله.

#29

السلام عليكم ورحمة الله وبركاته..

حياك الله وأهلاً بك..

الطريقة المذكورة هنا لا تعمل مع قواعد بيانات أكسس سواء اتصلت بها عن طريق الدلفي أو الفيبي أو غيره؛ والحل أنه لو عندك نصوص كبيرة الحجم في قاعدة البيانات فاستخدم فكرة الفهرسة وإن كانت طويلة وفيها بعض الصعوبة..

وإن شاء الله أحاول كتابة موضوع يشرح آلية البحث المفهرس بشكل كامل قريباً بإذن الله.

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

وفقنا الله وإياك للخير

والسلام عليكم ورحمة الله وبركاته

#30
اقتباس
والآن الخطوة الثانية:

لو وضعنا هذين القوسين على بعض الحروف مثلاً:

كودSelect * from tbl where fld like '[أا]حمد'

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

وهكذا نكون قد وصلنا إلى حل لتجاهل الهمزات أثناء البحث.

جزاك الله خيرآ يا أخى

ولك ألف شكر

ولكن ماذا لو كان الاسم غير أحمد؟

أيمن أو ابراهيم أو علاء أو ادريس أو -------------

أى كان متغير سيدخله المستخدم بنفسه فى أى TEXTBOX

ثم أبدأ فى البحث عنه

مرفق برنامج صغير ، رجاء تعديله حتى يتجاهل الهمزات أثناء البحث

ولك ألف شكر

_______.rar

بســم الله الـرحمــن الرحيــم

السلام عليكــم ورحمـة الله وبركاتــة ،،

الحمدلله والصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين

شكراً لك اخي الكريم

#31

يا أستاااااااااااذ/ أبو اليسر

أرجووووووووك رد على سؤالى

بســم الله الـرحمــن الرحيــم

السلام عليكــم ورحمـة الله وبركاتــة ،،

الحمدلله والصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين

شكراً لك اخي الكريم

#32

السلام عليكــم ورحمـة الله وبركاتــه

حياك الله أخي الفاضل..

أعتذر لأنني لا أدخل المنتدى بشكل منتظم وبالتالي لم أر طلبك هذا حتى اليوم..

وعلى كل فإن الكود الذي تطلبه وضعته في أول صفحة وما عليك سوى تحويله ليعمل مع VB6

وقد قمت بالعملية وأرفقت لك المثال بعد تعديله.

وبالمناسبة أنصحك إن أردت المتابعة بقوة في مجال البرمجة أن تبدأ بترك ال VB6 لضعفه، وأن تتعلم بيئة .NET وVB.NET، ولن تجد صعوبة في ذلك إن شاء الله لما تمتلكه من خلفية في الVB6

يسر الله لنا ولك الخير..

والسلام عليكم ورحمة الله وبركاته.

تم تعديل هذه المشاركة بواسطة أبو اليسر في 2 فبراير 2009 في 12:54

#33

السلام عليكــم ورحمـة الله وبركاتــه

أعتذر عن وجود خطأ في المرفق السابق فيما يخص تجاهل أحرف العلة..

وقد قمت بتصحيح الخطأ وأعيد إرفاق المثال هنا.

علماً أنه في هذه الدقائق قد حمل 7 مرات فأرجو ممن قام بتحميله أن يتجاهله ويتابع المرفق الجديد.

والسلام عليكم ورحمة الله وبركاته.

06.zip

#34

جزاك الله خيرآ يا أخى

ولك ألف ألف شكر

بســم الله الـرحمــن الرحيــم

السلام عليكــم ورحمـة الله وبركاتــة ،،

الحمدلله والصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين

شكراً لك اخي الكريم

#35

السلام عليكم

مجهود رائع

لكن هل ينطبق هذا الكلام على السيكول 2000؟؟ وكيفف العمل

وأرجو أن ترفق الكود الخاص بالمشروع

"IgnoreTashkeel"

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

#36

السلام عليكم ورحمة الله وبركاته

شكراً لك..

أنا لم أتعامل مع SQL Server 2000 ولا أعرف إن كانت هذه الطريقة ناجحة معه.

بالنسبة للمرفق IgnoreTashkeel فهو لا يعمل من الصفحة الأولى للموضوع ولكني أعدت إرفاقه ضمن الملف TahkeelUpdate2 في الصفحة الثالثة للموضوع.

والسلام عليكم ورحمة الله وبركاته

#37

مشكور على الموضوع القيم

#38

أخي الكريم

بارك الله فيك و بجهدك

بالنسبة للـ FullTextSearch

فهناك قاعدة بيانات جديدة تدعم هذا النوع من البحث و هي VistaDB

#39

هل من الممكن تعطينا مثال للأكسس

#40

السلام عليكــم ورحمـة الله وبركاتــه ،،

جزاك الله خيراً أخي..

المثال بالأكسس موجود في إحدى مشاركاتي في نفس هذه الصفحة في المرفقات: هنا

طبعاً هذا المثال مكتوب بvb6 مع قاعدة بيانات أكسس وفيه تجاهل الهمزات والتاء المربوطة وأحرف العلة، وليس تجاهل التشكيل؛ لأن تجاهل التشكيل لا يمكن بهذه الطريقة مع قواعد بيانات أكسس.

يسر الله لك الخير..

والسلام عليكم ورحمة الله وبركاته

#41

بارك الله فيك أخي أبو اليسر

ولكن لو أردنا تطبيق الطريقة هذه بدون المعالج هل يمكن ذلك

أنا طبقتها والحمد لله نجحت معي ولكن نريد أن تكون قاعدة البيانات اختياريه بدلا من قاعدة واحدة

يعني لو أمكن ربط القاعدة والبحث فيها من خلال الكود فقط ولا سيما أداة الــ Dataset لانرد سحبها على النموذج ولكن نريد التعمل معها كعصر يتم إنشاة برمجيا Dim data as new dataset ولك مني جزيل الشكر

#42

جزاك الله كل خير أخي أبو اليسر

هل لا زالت برامج الأكسيس قاصرة عن تلبية هذا الطلب ؟؟؟!!!

بإعتقادي أي شخص يملكن نسخة أصلية من المايكروسوفت أكسيس يمكنه طلب المساعدة من شركة مايكروسوفت وهي ملزومة بتوفير ما يلزم لبرامجها لتعمل بشكل صحيح ، ولا كلمي غلط ؟؟؟؟!!!!

ألا يمكن التواصل مع مايكروسوفت من قبل المبرمجين العرب لحل هذا المشكل ، من أساسه ؟؟؟ !!! في النسخ الجديده من المايكروسوفت أكسيس وحتى SQL وغيرها

وشكراً

#43
سعد2 كتب:

جزاك الله كل خير أخي أبو اليسر

هل لا زالت برامج الأكسيس قاصرة عن تلبية هذا الطلب ؟؟؟!!!

بإعتقادي أي شخص يملكن نسخة أصلية من المايكروسوفت أكسيس يمكنه طلب المساعدة من شركة مايكروسوفت وهي ملزومة بتوفير ما يلزم لبرامجها لتعمل بشكل صحيح ، ولا كلمي غلط ؟؟؟؟!!!!

ألا يمكن التواصل مع مايكروسوفت من قبل المبرمجين العرب لحل هذا المشكل ، من أساسه ؟؟؟ !!! في النسخ الجديده من المايكروسوفت أكسيس وحتى SQL وغيرها

وشكراً

السلام عليكم ورحمة الله وبركاته..

وجزاك الله خيراً أخي الكريم..

أعتذر للمنتدى فكل فترة أدخل لأضيف شيئاً في هذا الموضوع لكن لعله أن يكون مفيداً إن شاء الله..

بالنسبة لفكرة الطلب من مايكروسوفت فإنني أريد أن أشير إلى وجود طلب كهذا الآن..

عند البحث في غوغل عن: arabic tashkeel sql server تظهر النتيجة الأولى تشير إلى هذا الطلب في موقع microsoft connect

هذا هو رابط الطلب:

http://connect.microsoft.com/SQLServer/feedback/details/616727/ignore-tashkeel-letters-in-arabic-full-text-search

لكن هو في قسم sql server، فيمكن للإخوة المتابعين للأكسس أن يقدموا نفس هذا الطلب في قسم الأكسس، أو أن يتابعوا ما سيحصل في هذا أولاً؛ ومن يستطيع أن يدخل ليسجل vote لهذا الطلب فهذا جيد إن شاء الله.

ويبدو في الطلب السابق أن مايكروسوفت استجابت ووعدت بتقديم الحل في الإصدار التالي.

بارك الله فيكم

والسلام عليكم ورحمة الله وبركاته

#44

شكرااااااااااااا الله يعطيك العافيه وكل قوه

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…