programming thinking

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

programming thinking عنوان موضوعي اليوم كلنا نعلم ان اهم من البرمجه وكتابه الاكواد هو التفكير البرمجي في حد ذاته

Don't learn to code learn to think

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

لدي جدول في قاعدة البيانات (t1) يحتوي علي id - title - user_id - price

وجدول اخر (users) يحتوي علي id - name

نفترض الجدول الاول يحتوي علي البيانات التاليه علي التوالي حسب ترتيب الاعمدة

Id :1

Title: laptop samsung

User_id:1

Price:500

والجدول الثاني يحتوي علي

Id:1

Name:Amr Alaa

اريد عند البحث بالكلمه التاليه

Laptop samsong السعر من 100 الي 800. للعضو Amr Alaa

احصل علي الناتج المطلوب من الجدول الاول الذي يحمل id 1

لاحظ كلمه samsung مكتوبه خطأ ومن الممكن ان يكون عبارة البحث بترتيب مختلف مثلا

لAmr alaa منتج laptop samsung من 100 الي 800

هل من لديه حل لهذة المشكله

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

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

أهلا @3mralaa

أولا أنا مبرمج هاوي ومبتدئ في قواعد البيانات

ولكن أفكر في عمل match لل rows التي ال Title الخاص بها يقترب كثيرا للTitle الذي أبحث عنها

أفكر في حل هذه المشكلة باستخدام خوارزمية levenshtein distance طبعا يعني بشكل مبسط أقوم بحساب Levenshtein distance بين title كل row و title الذي أبجث عنها واخذ الفوراق الاصغر .

أرجو أن تكون فهمت قصدي ؟

لقد وصلت الي حل جميل جدا ويعتبر جزأ من الحل لاكن حاول التطبيق وسوف تجد بطئ شديد في levenshtein

تعتبر وصلت لجزئ من الحل وليس الحل كله

نعم صحيح عندك حق تعقيد algorithm levenshtein distance باستعمال Dynamic programming هو O(n^2) واذا طبقناها على عدد k أعمدة فصيصبع شئ ضخم مثل O(k*n^2)

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

لم افهم اين المشكلة ؟

المشكلة في البحث بنص به بعض الأخطاء فقط ؟

اريد كتابه كلمه البحث المزكوره يخرج لي نتائج المفرطه في الجداول

يوجد الكثير من الطرق لحل هذه المشكلة

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

كل طريقة حل لها مشاكل محددة و هذا ما يدفع لاعتماد طرق محددة و استبعاد أخرى


بالنسبة لخوارزمية حل المشكلة الموضحة فتكون كما يلي

البحث عن ادخال المستخدم كما هو

في حال كانت النتائج 0 أو عدد قليل يتم البحث عن العبارة باستبدال الاحرف الصوتية (a-o-e-i-u) بالرمز * أي نبحث عن أي نص به العبارة بغض النظر عن الحرف المدخل مكان الحرف الصوتي

بالنسبة للحالة الثانية فالبحث بشكل عام يتم بغض النظر عن حالة الأحرف أي a او A تظهر نفس النتيجة

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

مع تحياتي

اشكرك للمساهمه لاكن البحث لا يعتمد فقط علي ال soundex بل به تعمق مقل السعر 100 الي 800 وهو يوجد في اعمده اخري

تحياتي

-1

تستطيع القيام بتقسيم الكلمات حسب الفراغ التي بينها " " ومن ثم تاخذ المقاطع اللعددية وتبحث بها في مصفوف price (تتثب من العدد الاكبر والاصغر ومن ثم تقوم بحصر الprice فيما بينهم) وكذلك تبحث على الكلمات المشابهة في مصفوف title ومن ثم تقوم بالبحث على اسم العضو المشابه وتقوم بالتثب من مطابقة id التابعة له لل user_id ...

معقدة قليلا لكن أعتقد انه يوجد حل أسهل ؟

حل جميل ولاكن غير مجدي لان في الموضوع زكرت يمكن البحث يبتدي باسم المنتج في الاول ويمكن في الاخر :D

-1

يمكنك البحث عن كل الكلمات المتحصل عليها من التقسيم :)

ارجو قرائه الموضوع جيدا