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

ما هو حل مشكلة البحث في النصوص العربية المشكلة

بدأه hsn67 في 27 نوفمبر 2011 · 4 رد · 1,213 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

يوجد مشكلة عندما يكون النص في قاعدة البيانات مشكل (مضبوط بالشكل) مكتوب بالحركات بالفتحة والضمة والكسرة والشدة والسكون

عندما تضع نموذج بحث طبيعي أن المتصفح يكتب الكلمة بدون حركات وبالتالي نتيجة البحث صفر

مثال

ابحث في هذه الصفحة في نصوص المصحف الشريف

http://books.islamww.com/quran.html

إذا بحث عن كلمة (خالدون) النتيجة صفر ، إذا بحث عن الكلمة كما هي مطبوعة في قاعدة البيانات بالتشكيل (خَالِدُونَ) يعطيك 25 نتيجة

ما هو الحل لتجاوز هذا الإشكال علما بأن دالة لاور وأبر لا تفيد شيئا في حل هذه المشكلة

تحياتي

تم تعديل هذه المشاركة بواسطة hsn67 في 27 نوفمبر 2011 في 08:18

#2

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

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

لإزالة التشكيل باستعمال php، يمكنك استعمال preg_replace ، حيث أن حركات التشكيل في unicode تمتد من 064B إلى 0653، .

<?php
header('Content-Type: text/html; charset=UTF-8');

$text = 'بِسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيمِ (1) الْحَمْدُ لِلَّهِ رَبِّ الْعَالَمِينَ (2) الرَّحْمَنِ الرَّحِيمِ (3) مَالِكِ يَوْمِ الدِّينِ (4) إِيَّاكَ نَعْبُدُ وَإِيَّاكَ نَسْتَعِينُ (5) اهْدِنَا الصِّرَاطَ الْمُسْتَقِيمَ (6) صِرَاطَ الَّذِينَ أَنْعَمْتَ عَلَيْهِمْ غَيْرِ الْمَغْضُوبِ عَلَيْهِمْ وَلَا الضَّالِّينَ';

echo "Before: $text<br />";

$text_no_tachkil = preg_replace('/[\x{064B}-\x{0653}]/u', '', $text);

echo "After: $text_no_tachkil<br />";
?>

تم تعديل هذه المشاركة بواسطة herch في 27 نوفمبر 2011 في 12:44

1
#3

ممتاز الحل

لكن الا يوجد دالة في الـ MySql تقوم بعمل preg_replace أثناء البحث وتوفر علينا مشوار إنشاء جدول ثاني

المشكلة يا عزيزي إن عندي في المكتبة أكثر من خمسة آلاف كتاب كثير منها بالتشكيل

طبعا غير نصوص المصحف

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

http://dev.mysql.com/doc/refman/5.1/en/regexp.html

ويا ليت لو تكمل جميلك وتتابع معنا وفقك الله

#4

المشكل أن regular expressions في MySQL بدائية نوعا ما ولا تدعم ال unicode حسب ما فهمت، لذلك لا يمكن عمل شيء مثل preg_replace

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

بانتظار اقتراحات باقي الأعضاء، ممكن يكون هناك حل أفضل

#5

حل أكثر من رائع وطبقته الآن

يبقى مشكلة الدوران على كل الكتب المحتوية على تشكيل وهي ليست مشكلة كبيرة

شكرا يا أخي الكريم جعلها الله في ميزان حسناتك

تم تعديل هذه المشاركة بواسطة hsn67 في 27 نوفمبر 2011 في 16:19

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

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

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

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

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