تكنولوجيا

كيفية استخدام البحث عن نص كامل في MySQL – CloudSavvy IT

البحث عن نص كامل هو تقنية قاعدة بيانات تقوم باسترداد السجلات حتى لو لم تتطابق تمامًا مع معايير البحث الخاصة بك. هذا يسمح ببحث أكثر طبيعية وغنية باللغة الطبيعية.

سيؤدي البحث عن “محرك قاعدة بيانات” باستخدام البحث في النص الكامل إلى عرض نتائج تحتوي على عبارة “قاعدة بيانات” أو “محرك” أو “محرك قاعدة بيانات”. يمكن أن يؤدي ذلك إلى حل الالتباسات المحتملة في معايير البحث ، لذلك سيستمر عرض سطور مثل “لدي قاعدة بيانات ومحرك”.

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

تستخدم استعلامات النص الكامل فهارس تم إنشاؤها خصيصًا لتحسين الأداء. يتيح هذا أيضًا لـ MySQL تتبع الكلمات في مجموعة البيانات ، وبالتالي تسهيل عمليات البحث عن اللغة الطبيعية.

يمكنك فقط استخدام البحث عن نص كامل في الأعمدة التي تحتوي على فهرس نص كامل.استعمال FULLTEXT بند في CREATE TABLE البيان الذي سيتم تعيينه عند زرع وضع قاعدة البيانات.يمكنك أيضًا دمجها مع ملفات ALTER TABLE أضف فهرس بحث إلى عمود موجود.

CREATE TABLE articles(content TEXT, FULLTEXT (content));
 
ALTER TABLE articles ADD FULLTEXT (content);

بمجرد أن يكون لديك فهرس ، يمكنك البدء في الاستعلام عن قاعدة البيانات.

استخدم البحث عن نص كامل

البحث عن نص كامل WHERE شروط.انت تستخدم MATCH AGAINST بدلا من LIKE. تحتاج إلى الإشارة إلى عمود الفهرس للمطابقة والاستعلام المراد البحث فيه.

SELECT * FROM articles WHERE MATCH (content) AGAINST ('database engine' IN NATURAL LANGUAGE MODE);

سيستخدم هذا الاستعلام لإجراء بحث نص كامل database engine.بالتعيين IN NATURAL LANGUAGE MODE، يوجه MySQL لتفسير الاستعلام حرفيًا وعدم معالجته بأي شكل من الأشكال. إذا لم يتم تحديده ، فهذا هو وضع البحث الافتراضي.

فرز النتائج حسب الصلة

تتمثل إحدى مزايا البحث عن نص كامل في أنه يسمح لك بفرز السجلات التي تم إرجاعها حسب الصلة.بالنسبة للروتين ، هذا مستحيل LIKE يطلب.يمكنك استخدامها MATCH ... AGAINST فقرة كجزء من SQL SELECT. سيحتوي العمود الافتراضي الذي تم إرجاعه على درجة ملاءمة من 0 إلى 1 ، مما يشير إلى مدى تطابق السجل مع استعلام البحث.

SELECT content, MATCH (content) AGAINST ('database engine') AS relevance FROM articles ORDER BY relevance DESC

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

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

عند استخدامه MATCH ... AGAINST في SELECT أعلن أنك لست بحاجة إلى ذلك WHERE شروط. يمكنك تصفية النتائج يدويًا لتضمين فقط السجلات ذات درجة الارتباط غير الصفرية.

SELECT content, MATCH (content) AGAINST ('database engine') AS relevance FROM articles WHERE relevance > 0 ORDER BY relevance DESC

وضع توسيع الاستعلام

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

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

طريقة تمكين وضع توسيع الاستعلام كما يلي:

SELECT * FROM articles WHERE MATCH (content) AGAINST ('database engine' WITH QUERY EXPANSION)

الوضع المنطقي

وضع البحث النهائي عن النص الكامل هو الوضع المنطقي. هذا يسمح لك بتضمين المعدلات المنطقية في الاستعلام. يمكن استخدام هذا الوضع عندما يكون التحكم المتقدم في منطق المطابقة مطلوبًا.

يمكنك إضافة بادئة لكل نتيجة للمطالبة بأن تحتوي كل كلمة على كلمة واحدة +.استعمال - استبعاد النتائج التي تحتوي على كلمات.يمكن استخدام عوامل التشغيل الأخرى لمطابقة جزء من كلمة وإنشاء تعبيرات فرعية وإنشاء كلمات أرجع للخلف – قلص درجة الملاءمة. قد يكون الأخير مفيدًا عند إخفاء مصطلح “الضوضاء”.إذا لم تحدد عامل تشغيل ، فهذا يعني أنه سيتم اقتباس الكلمة في الاستعلام بـ OR.

SELECT * FROM articles WHERE MATCH (content) AGAINST ('+data* engine -sqlite' IN BOOLEAN MODE)

سيبدأ الاستعلام بمقالات تبدأ بكلمة واحدة على الأقل data أين هي sqlite لم يذكر.كل نتيجة قد تحتوي أو لا تحتوي على كلمات engine.

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

يأتي MySQL بالعديد من خيارات تكوين النص الكامل التي تسمح لك بضبط طريقة البحث. فيما يلي بعض من أهمها.

  • innodb_ft_min_token_size – تعيين الحد الأدنى لطول كلمة كلمات الفهرس. لن تتم إضافة الكلمات ذات الأحرف الأقل من هذه القيمة إلى الفهرس ، لذلك لن تتمكن من البحث عنها.النظام الأساسي 3، والذي يستبعد أشياء مثل aو an مع I. ينطبق هذا الإعداد على جداول InnoDB.استعمال ft_min_word_len من أجل MyISAM.
  • innodb_ft_max_token_size -مشابه ل innodb_ft_min_token_size،هذا سوف أقصى طول مصطلح المؤشر. لن تكون الكلمات الأطول قابلة للبحث.استعمال ft_max_word_len تستخدم لجداول MyISAM.
  • innodb_ft_enable_stopword – افتراضيًا ، يتم تشغيل هذا الإعداد ، مما يسمح لك بالتحكم في ما إذا كان يجب على MySQL تصفية “كلمات الإيقاف”. كلمات الإيقاف هي كلمات شائعة جدًا وقد تؤثر بشكل غير صحيح في نتائج البحث. تحتوي قائمة كلمات الإيقاف الافتراضية على 36 عبارة شائعة.
  • innodb_ft_user_stopword_table -يمكنك تعيين هذه القيمة على اسم جدول قاعدة البيانات ، ويجب أن تحصل MySQL على قائمة كلمات الإيقاف من جدول قاعدة البيانات.يجب أن يحتوي الجدول على ملف VARCHAR العمود يسمى value. أضف كلمات التوقف لاستبعادها كسجلات في هذا الجدول.

عادة ما يتم تعيين هذه الإعدادات في ملف تكوين خادم MySQL.يختلف الموقع من منصة إلى أخرى ؛ ويمكن العثور عليه عادةً على /etc/mysql/my.cnf. بعد تغيير الإعدادات ، تحتاج إلى إعادة تشغيل خدمة MySQL.

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

لإعادة فهرسة جداول InnoDB ، قم بتشغيل OPTIMIZE TABLE my_table.بالنسبة لجداول MyISAM ، استخدم REPAIR TABLE my_table QUICK. سيتم بعد ذلك إعادة بناء فهرس البحث حتى تدخل تغييرات التكوين حيز التنفيذ.

التعميم

قم بتمكين البحث عن نص كامل في MySQL عن طريق إضافة ما يلي FULLTEXT فهرس في مجال البحث الخاص بك.ثم تستخدم MATCH ... AGAINST استخدم أحد أوضاع البحث الثلاثة للحصول على النتائج. تعرض استعلامات اللغة الطبيعية نتائج البحث ذات الصلة ، والتي يمكنك استخدامها لترتيب النتائج.

مقارنةً بالبحث عن نص كامل ، يوفر البحث عن نص كامل سلوك بحث أكثر قوة LIKE بيان. كما أنه يتمتع بأداء أعلى ، خاصة على مجموعات البيانات الكبيرة ، لأن كل النصوص مفهرسة مسبقًا.

مقالات ذات صلة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني.

زر الذهاب إلى الأعلى