سؤال

أتساءل عما إذا كانت محركات SQL الرئيسية الموجودة (MS SQL ، Oracle ، MySQL) لديها القدرة على فهم أن كلمتين مرتبطتين لأنها تشترك في نفس الجذر.

نحن نعلم أنه من السهل مطابقة "الشبكات" عند البحث عن "الشبكة" لأن الأخير هو فرعي للأولى.

ولكن هل تحتوي محركات SQL على وظائف يمكنها مطابقة "الشبكة" عند البحث عن "الشبكات"؟

شكرًا جزيلاً.

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

المحلول

هذه الوظيفة تسمى أ STEMMER: خوارزمية يمكنها استنتاج نبع من أي شكل من أشكال الكلمة.

يمكن أن يكون هذا معقدًا جدًا: على سبيل المثال ، الكلمات الروسية шёл و иду هي أشكال مختلفة من نفس الفعل ، على الرغم من أنها لم يكن لها رسالة شائعة واحدة (من المفارقات ، هذا صحيح أيضًا بالنسبة للغة الإنجليزية: went و go).

يمكن أن يكون كسر الكلمات أيضًا مهمة معقدة لبعض اللغات التي لا تستخدم مسافات بين الكلمات.

SQL Server يسمح باستخدام الجذعية القابلة للتجميع وكسارات الكلمات لمحرك البحث الكامل:

http://msdn.microsoft.com/en-us/library/ms142509.aspx

نصائح أخرى

أعتقد أن الموضوع هو "التشابه الدلالي". هناك العديد من الجهود التي تحاول إيجاد حلول مثالية لهذه المشكلة.

يمكنك محاولة استخدام Soundex ، على الرغم من أنه قد لا يكون بالضبط ما تريد. نرى http://www.codeproject.com/kb/database/phonetic_search_mssql.aspx.

كما أشار Quassnoi ، يمكن القيام بذلك تنبع. PostgreSQL تنفذها ل البحث عن النص الكامل إذا قمت بتشغيله.

ALTER TEXT SEARCH CONFIGURATION blah_en ADD MAPPING FOR english_stem;

هذا يستخدم قاموس كرة الثلج, ، الذي يعتمد على بورتر سبت. من المحتمل أن يكون STEMMER Porter أحد أكثر الجذائف استخدامًا على نطاق واسع ، لذلك سيعطي نتائج لائقة. من المهم أن تتذكر ، على الرغم من ذلك ، أن التنقيب ليس دقيقًا دائمًا كما تريد.

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