سؤال

حالة الاستخدام

عندما يذهب المستخدم إلى موقع الويب الخاص بي ، سيواجههم مربع بحث مثل ذلك. يمكنهم البحث عن النتائج باستخدام نص الخطة. ".net Questions" ، "أسئلة مغلقة" ، ".NET و Java" ، إلخ. سيعمل البحث مختلفًا بعض الشيء ، لأنه سيحاول قدر الإمكان من مخطط قاعدة البيانات بدلاً من أ البحث الكامل مباشرة. لذا فإن ".NET QUESES" ستبحث فقط عن أسئلة .NET بدلاً من إجابات .NET (ربما لا تنطبق على ذلك ، مجرد مثال هنا) ، "أسئلة مغلقة" ستعيد أسئلة مغلقة ".NET و Java" ستعيد الأسئلة أسئلة تتعلق بـ .NET و Java ولا شيء آخر.

مشكلة

لست على دراية بالكلمات ولكني أريد أساسًا أن أفعل كلمة رئيسية للبحث عن SQL. أعرف مخطط قاعدة البيانات ويمكنني أيضًا datamine قاعدة البيانات. أريد أن أعرف أي نهج حالية هناك بالفعل قبل أن أحاول تنفيذ هذا. أعتقد أن هذا السؤال هو تصميم جيد للمشكلة المعلنة.

مقترح

إن الحل المقترح حتى الآن يبدو مثل هذا

  1. تنظيف المدخلات. فقط قم بإزالة أي أحرف خاصة
  2. تحليل المدخلات في قطع البيانات. كسر إدخال "C# java" إلى C# و Java مع التعامل مع الحالات الخاصة مثل "" C# Java "أسئلة" إلى "C# Java" و "الأسئلة".
  3. بناء شجرة من المدخلات
  4. ربط البيانات في البيانات الوصفية. لذا ، قم بتحويل أشياء مثل الأسئلة المغلقة وربطها بالعمود الذي تم وضعه في الجدول.
  5. تحويل الشجرة إلى استعلام SQL.

الأفكار/الاقتراحات/الروابط؟

هل كانت مفيدة؟

المحلول

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

ترتبط المنتجات أيضًا بالألبومات وقوائم التشغيل ، ولكن للحصول على شرح أبسط ، سأقوم فقط بتوضيح الكلمات الرئيسية للمنتجات والاستعلام عنها.

مخطط قاعدة البيانات

Keywords الجدول - جدول مرجح لكل كلمة يمكن البحث عنها (وبالتالي ، يتم الرجوع إليها في مكان ما) مع البيانات التالية لكل سجل:

  • معرف الكلمة الرئيسية (وليس الكلمة) ،
  • الكلمة نفسها ،
  • قيمة alpha Soundex للكلمة
  • وزن

ProductKeywords الجدول - جدول مرجح لكل كلمة رئيسية مشار إليها من قبل أي من حقول المنتج (أو الأعمدة) مع البيانات التالية لكل سجل:

  • معرف المنتج،
  • معرف الكلمات الرئيسية ،
  • وزن

ترجيح الكلمات الرئيسية

قيمة الترجيح هي مؤشر على عدد مرات حدوث الكلمات. تعتبر الكلمات الرئيسية المطابقة ذات الوزن المنخفض "أكثر فريدة" ومن المرجح أن تكون أكثر ما يتم البحث عنها. وبهذه الطريقة ، غالبًا ما تكون الكلمات التي تحدث تلقائيًا "منخفضة الوزن" ، على سبيل المثال. "The" ، "A" أو "I". ومع ذلك ، من الأفضل تجريد الأحداث الذرية لتلك الكلمات الشائعة قبل الفهرسة.

لقد استخدمت الأعداد الصحيحة للترجيح ، ولكن استخدام قيمة عشرية سيوفر المزيد من التنوع ، ربما مع فرز أبطأ قليلاً.

الفهرسة

كلما تم تحديث أي حقل منتج ، على سبيل المثال. الفنان أو العنوان (الذي لا يحدث ذلك في كثير من الأحيان) ، فإن تشغيل قاعدة البيانات يعيد إثارة الكلمات الرئيسية للمنتج مثل حتى داخل المعاملة:

  1. يتم تفكيك جميع الكلمات الرئيسية للمنتج وحذفها إذا لم تعد الرجوع إليها.
  2. يتم تخزين/استرداد/استرداد كل حقل مفهرس (مثل الفنان) ككلمة رئيسية في مجملها ومرتبط بالمنتج في ProductKeywords جدول لمباراة مباشرة.
  3. ثم يتم زيادة وزن الكلمة الرئيسية من خلال القيمة التي تعتمد على أهمية الحقل. يمكنك إضافة وطرح الوزن بناءً على أهمية الحقل. إذا كان الفنان أكثر أهمية من العنوان ، فقم بطرح 1 أو 2 منه ProductKeyword ضبط الوزن.
  4. يتم تجريد كل قيمة حقل مفهرسة من أي أحرف غير رقمية وتقسيم إلى مجموعات كلمات منفصلة ، على سبيل المثال. "بيلي جويل" يصبح "بيلي" و "جويل".
  5. كل مجموعة كلمات منفصلة لكل قيمة حقل يتم صقلها وتخزينها/استرجاعها ككلمة رئيسية وترتبط بالمنتج بنفس الطريقة في الخطوة 2. إذا كانت الكلمة الرئيسية مرتبطة بالفعل بالمنتج ، فسيتم ضبط وزنها ببساطة.

الاستعلام

  1. خذ سلسلة البحث عن استعلام الإدخال بالكامل وابحث عن كلمة رئيسية مطابقة مباشرة. استرجاع جميع كلمات ProducteKeyword للكلمة الرئيسية في جدول في الذاكرة جنبا إلى جنب مع وزن الكلمة الرئيسية (يختلف عن وزن ProducteKey).
  2. قم بتجريد جميع الأحرف غير الرقمية والاستعلام المقسم إلى كلمات رئيسية. استرجاع جميع الكلمات الرئيسية الموجودة (سوف يتطابق عدد قليل فقط). انضم إلى ProducteKeywords لمطابقة الكلمات الرئيسية مع الجدول داخل الذاكرة جنبًا إلى جنب مع وزن الكلمة الرئيسية ، وهو ما يختلف عن وزن ProducteKey.
  3. كرر الخطوة 2 ولكن استخدم قيم Soundex بدلاً من ذلك ، وضبط الأوزان لتكون أقل أهمية.
  4. انضم إلى Retrieved ProducteKeywords إلى منتجاتها ذات الصلة واسترداد مبيعات كل منتج ، وهو مقياس للشعبية.
  5. فرز النتائج حسب وزن الكلمة الرئيسية ، وزن ProducteKeyword والمبيعات. يعتمد الجمع/الفرز و/أو الترجيح النهائي على تنفيذك.
  6. الحد من النتائج وإرجاع نتائج البحث عن المنتج إلى العميل.

نصائح أخرى

ما تبحث عنه هو معالجة اللغة الطبيعية. الغريب بما فيه الكفاية هذا تستخدم ليتم تضمينها مجانًا استعلام اللغة الإنجليزية في SQL Server 2000 و Prior. لكنه ذهب الآن

بعض المصادر الأخرى هي:

هذا المفهوم هو عبارة عن كلمات رسم خرائط قاموس بيانات البيانات التعويضية إلى الجدول والأعمدة والعلاقات وما إلى ذلك وحامل الجملة الإنجليزية مجتمعة معًا لتحويل جملة باللغة الإنجليزية (أو مجرد بعض الكلمات الرئيسية) إلى استعلام حقيقي

بعض الأشخاص حتى استعلام المستخدمين في اللغة الإنجليزية مع التعرف على الكلام لبعض العروض التوضيحية الرائعة حقًا ، ولم يروا أنه يستخدم في الغضب!

إذا كنت تستخدم SQL Server ، يمكنك ببساطة استخدامه البحث عن النص الكامل الميزة ، التي تم تصميمها خصيصًا لحل مشكلتك.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top