المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : تجاهل النقاط في عملية البحث



أهــل الحـديث
27-12-2012, 12:40 PM
أهل - الحديث - حديث شريف - محمد - صلى الله عليه وسلم - قرأن كريم


<div>

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

الحمد لله وسلامٌ على عباده الذين اصطفى
السلام عليكم ورحمة الله وبركاته
أما بعد:
فهذا اقتراح مهمّ في تحسين عملية البحث، أرجو أن يكون مفيدا في مجال محرّكات البحث، وهو تجاهل النقاط
الفكرة هي: وضع خاصية جديدة لتجاهل النقاط مثل خاصية " تجاهل الهمزات "؛
قد تريد البحث عن ترجمة أبي بكر "البزاز" –بالزاي- ثم تفاجأ بأنه غير موجود؛ لكونه مصحفا إلى "البزار" –بالراء.
وكذلك "الخباز"، و"خزر" و "خرز"، و "فقر" و "قفر" ... وهذا كثير.
أرى أن ذلك سهل؛ وذلك بأن تصنَّف الحروف المعجمة، ويجعل حرف واحد منها (أكثرها ورودا –مثلاً-) افتراضيا، هكذا:
1- ا، ى = ا
2- ب، ت، ث، ن، ي = ب
و أما الألف المقصورة (ى) فينظر في أمرها. إما أن تجعل هنا، وإما أن تكون مع الألف هكذا: ا، ى = ا
3- ج، ح، خ = ح
4- د، ذ = د
5- ر، ز = ر
6- س، ش = س
7- ص، ض = ص
وهكذا.
أما كود (وتعليمات) البرنامج، فيمكن أن يكون على طرق منها:
أ****- البحث متعدد الخطوات:
1- البحث عن النص المدخل أوّلا،
2- معالجة نص البحث واستبدال حرف كل مجموعة (ا ى، بتثني، جحخ، سش، صض، طظ، عغ، فق) بحرف من حروف المجموعة، ثم البحث، ثم يأخذ حرفا آخر، ويبحث ... إلى آخر حرف من نص البحث، مع حفظ نتائج البحث تلقائيا في الذاكرة.
مثال:
البزار = (البرار، البراز، البزاز) -أي: يبحث 3 مرات، بثلاث احتمالات- (الترار، التراز، التزار، التزاز) -أي: يبحث 4 مرات- (الثرار، الثراز، الثزار، الثزاز) أي: يبحث 4 مرات... وهكذا.
3- بعد الوصول إلى آخر احتمال في آخر حرف من حروف نص البحث، يخرج نتائج البحث على شاشة النتائج.
ب****- طريقة تعدّد الفهارس،
وهي أسرع في البحث..
خلاصة هذه الطريقة هي إنشاء فهرس عادي للنصوص، وفهرس آخر –ثانوي- خاص بخدمة تجاهل النقاط، يتم فيه استبدال حروف كل مجموعة بالحرف الافتراضي
حروف المجموعات: (ا ى، بتثني، جحخ، سش، صض، طظ، عغ، فق)
الحروف الافتراضية في المجموعات: (ا، ب، ح، س، ص، ط، ع، ف).
عند البحث العادي يعتمد البرنامج الفهرس العاديّ،
وعند البحث بتجاهل النقاط يعتمد الفهرس الثاني الخاص (التي هي الحروف المهملة مع ك، ل، م، هـ، و).
أليس هذه الطريقة أسهل وأسرع بكثير من الطريقة الأولى؟

هذا كود استبدال الألف المقصورة بالياء، استخدمته في أحد برامجي:
<div align="left"> كود:
private void plateNoTextBox_KeyPress(object sender, KeyPressEventArgs e)
{ // هذا إجراء لإضافة مسافة فارغة بعد كل حرف، دون الأرقام
try
{
plateNoTextBox.SelectedText = ""; // لمسح النص المظلل قبل الكتابة
// إضافة مسافة فارغة بعد كل حرف، دون الأرقام
if ((e.KeyChar < '0' || e.KeyChar > '9') && (e.KeyChar != (char)(Keys.Back)))
{
if (e.KeyChar == (char)(Keys.Space)) // لمنع عمل زر المسافة، لأن المسافة تكتب تلقائيا بعد كل حرف
{
e.Handled = true;
MessageBox.Show("هذه الخانة لا تقبل المسافة الفارغة؛ لأنها تكتب تلقائيا");
}
else if (e.KeyChar == 'ى') // تبديل الألف المقصورة (ى) بالياء (ي) المثناة التحتية
{
e.KeyChar = 'ي';
}
else
{
plateNoTextBox.Text += e.KeyChar + " ";
e.Handled = true;
//هذا ناجح، ولكنه لا يجعل المؤشر في النهاية عند كتابة الأرقام
}

//هذا ناجح، ولكنه لا يجعل المؤشر في النهاية عند كتابة الأرقام
//plateNoIdTextBox.Text += (char)(Keys.Space);

//تجربة أخرى غير ناجحة
//plateNoIdTextBox.Text += e.KeyChar + (Keys.Space);
//e.Handled = true;

//plateNoIdTextBox.Text += ((char)sender) + " ";
//plateNoIdTextBox.Text += e.KeyChar + " ";
}
else if ((e.KeyChar >= '0' && e.KeyChar