سؤال فيما يخص تحسين البحث عن الداتا
لقد كنت في مقابلة عمل فيما يخص تطوير الويب، وسُئلت سؤالا لم اجب عليه بدقة وهو كالآتي :
اذا كان لدينا موقع لغته انجليزية بالكامل مع الداتا، وأتى شخص ادخل في حقل البحث كلمة عربية ك مثال 'إلكترون'، ولا يوجد في الداتابيس كلمة الكترون بالعربي لكن يوجد مرادف لها بالانجليزية 'electron'، ما هي الطريقة المناسبة لجعله يأتي بالنتائج التي تحتوي على كلمة elctron بالانجليزي والشخص بحثَ عن كلمة إلكترون بالعربي؟
اجابتي ربما كانت غير دقيقة، لكنها كانت كالاتي :
نعمل function يستقبل كلمة البحث، ونفحص اذا كانت الاحرف عربية باستخدام الاسكي كود، ونجعل كل حرف عربي مقابله شبيهه بالانجليزية مثلاً : ك -> k
وهكذا mapping، ربما ليست دقيقة بشكل كبير لكنها ستفي بالغرض.
سؤالي، هل يوجد طُرق اكثر كفاءة وتفي بالغرض بشكل سليم؟ :)
وشكرًا
إجابتي لهذا السؤال تختلف قليلا عن اجابتك ،مشكلة اجابتك انه فعّالة على الكلمات المعربة او الكلمات التي تتساوي باللغتين ، لكن لو كانت الكلمة عربي اصيلة مثل كلمة ( مكاتب ) حينها لن تنفع .
الحل في أنظمة البحث والفلترة بشكل عام شبه موحد ، يمكنك الإستفادة كالتالي :
لو كانت محتويات قاعدة البيانات عربي فقط :
وحّد المدخلات الى قاعدة البيانات عبر تحديد نمط معين للحروف الشائعه مثل توحيد شكل الهمزة على الألف (أ ، إ ، آ ) والتاء المربوطة ( ه ، ة ) وغيرها من الحروف
في حال كنت تستخدم كلمات مفتاحية tags في تسهيل البحث ، اذ لا يجب عليك تخزينها بصورتها الاساسية ، في الحقيقة هذا خطأ شائع ، لكي تستفيد من ال tags باقصى درجة يجب عليك تخزين جذر ال tag وليس نفسه ، مثلا لو كان الtag كلمة ( مكاتب ) ، عليك تخزينها كـ (كتب) ، وعند البحث تقوم بتجذير الكلمة ، حينها عند قيام المستخدم بالبحث عن اي كلمة من مشتقات الجذر ( كتب ) سيظهر له شيء يتعلق بها ، في الحقيقة هذا جزء اساسي من اساسيات استرجاع البيانات في محركات البحث
العمليه الإخرى هي القيام بإزاله الحركات اثناء البحث واثناء الاسترجاع
وغيرها .
في حالتك :
قم بإستخدام api للترجمه ومن خلالها يتم البحث
وسيقوم بإرجاع النتائج ، وبناء عليها استخدم ما سبق .
التعليقات