English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
بداية من إصدار 2.4، بدأ MongoDB في دعم مؤشرات النص للبحث عن محتويات النصوص. البحث النصي (Text Search) يستخدم تقنية تحليل الجذور في الحقول النصية للبحث عن الكلمات المحددة من خلال إزالة الكلمات التي تُستبعد في تحليل الجذور (مثل a، an، The وما إلى ذلك). في الوقت الحالي، يدعم MongoDB حوالي 15 لغة.
أولاً، كان "Text Search (بحث النص)" هو ميزة تجريبية، ولكن بدءًا من إصدار 2.6، تم تفعيل هذا الإعداد بشكل افتراضي.
تأمل في ما يليposts
مستندات المجموعة التي تحتوي على نص المقالة ووسومها-
> db.posts.insert({ "post_text": "Enjoy the mongodb articles on w3codebox", "tags": ["mongodb", "w3codebox"] } { "post_text" : "Writing tutorials on mongodb", "tags" : [ "mongodb", "tutorial" ] }) WriteResult({ "nInserted" : 1 })
سنقوم بإنشاء مؤشر نصي في حقل post_text، لذا يمكننا البحث في النصوص في المقالات-
> db.posts.createIndex({post_text:"text"}) { "createdCollectionAutomatically" : true, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }
الآن، قمنا بإنشاء مؤشر نصي في حقل post_text، وسنبحثw3codebox
جميع المقالات التي تحتوي على الكلمة.
> db.posts.find({$text:{$search:"w3codebox"}}).pretty(){ "_id" : ObjectId("5dd7ce28f1dd4583e7103fe0"), "post_text" : "Enjoy the mongodb articles on w3codebox", "tags" : [ "mongodb", "w3codebox" ] }
النتائج المقدمة من الأمر أعلاه هي مستندات النتائج التالية، مستندات النتائج التاليةw3codebox
تحتوي النصوص المنشورة على كلمة:
{ "_id" : ObjectId("53493d14d852429c10000002"), "post_text" : "Enjoy the mongodb articles on w3codebox", "tags" : [ "mongodb", "w3codebox" ]}
لإزالة المؤشرات النصية الحالية، يرجى أولاً استخدام الاستعلام التالي للعثور على اسم المؤشرات-
>db.posts.getIndexes()[ { "v":2, "key":{ "_id" : 1 }, "name" : "_id_", "ns":"mydb.posts" }, { "v":2, "key":{ "fts":"text", "ftsx":1 }, "name":"post_text_text", "ns":"mydb.posts", "weights":{ "post_text":1 }, "default_language":"english", "language_override":"language", "textIndexVersion":3 } ] >
بعد الحصول على اسم المؤشر من الاستعلام أعلاه، قم بتشغيل الأمر التالي. هنا،post_text_text
هذا هو اسم المؤشر.
>db.posts.dropIndex("post_text_text") {"nIndexesWas":2,"ok":1}