اذهب إلى المحتوى

السؤال

نشر

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

هذا كود الاستعلام لدي 

 

 $query->when($filters['search'] ?? false, fn($query, $search) =>
            $query->where(fn($query) =>
                $query->where('term', 'like', '%' . $search . '%')
                    ->orWhere('ar_meaning', 'like', '%' . $search . '%')

 

Recommended Posts

  • 0
نشر

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

وبالنسبة لحل للبحث بشكل مقارب بدون التجاهل الكامل للتشكيل، فعليك استخدام ميزة الترتيب حسب الشبهية (Fuzzy Search) مع بعض التعديلات على الكود، وتتوفر مكتبة مثل "scout" مع Elasticsearch لتحقيق ذلك.

وهناك مكتبة جاهزة توفر لك ذلك عليك قراءة المستند الخاص بها:

 

  • 0
نشر

هناك طرق كثيرة لحل هذه المشكلة ولكن اسهلهم هي التغير قليلا في ال queries لديك 
 

$query->when($filters['search'] ?? false, fn($query, $search) =>
            $query->where(fn($query) =>
                $query->where('term', 'like', '%' . str_slug($search) . '%')
                    ->orWhere('ar_meaning', 'like', '%' . str_slug($search) . '%')
            )
        );


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

  • 0
نشر
بتاريخ On 10‏/12‏/2023 at 20:06 قال Ahmed Emad35:

هناك طرق كثيرة لحل هذه المشكلة ولكن اسهلهم هي التغير قليلا في ال queries لديك 
 

$query->when($filters['search'] ?? false, fn($query, $search) =>
            $query->where(fn($query) =>
                $query->where('term', 'like', '%' . str_slug($search) . '%')
                    ->orWhere('ar_meaning', 'like', '%' . str_slug($search) . '%')
            )
        );


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

يخبرني المحرر أن دالة str_slug() غير معرفة

  • 0
نشر
بتاريخ On 5‏/12‏/2023 at 08:59 قال Mustafa Suleiman:

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

وبالنسبة لحل للبحث بشكل مقارب بدون التجاهل الكامل للتشكيل، فعليك استخدام ميزة الترتيب حسب الشبهية (Fuzzy Search) مع بعض التعديلات على الكود، وتتوفر مكتبة مثل "scout" مع Elasticsearch لتحقيق ذلك.

وهناك مكتبة جاهزة توفر لك ذلك عليك قراءة المستند الخاص بها:

 

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

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

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

×   جرى استعادة المحتوى السابق..   امسح المحرر

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...