با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، جلسه سی و چهارم از آموزش های MongoDB را با آموزش جستجوی متن در MongoDB آغاز میکنیم.با شروع نسخه ۲٫۴، MongoDB شروع به پشتیبانی از ایجاد فهرست متن در MongoDB برای جستجو در داخل محتوای رشته کرد. جستجوی متنی با استفاده از تکنیک های پیشنهادی برای جستجوی کلمات مشخص شده در فیلد های رشته با حذف کلمات متوقف کننده متناظر مانند an، a، the و غیره، در حال حاضر MongoDB از حدود ۱۵ زبان پشتیبانی می کند.
فعال کردن جستجوی متن یا (Text Search) ابتدا یک ویژگی آزمایشی بود اما از نسخه ۲٫۶ شروع شد، تنظیمات آن به طور پیش فرض فعال شده است. اما اگر از نسخه های قبل ۲٫۶ در MongoDB استفاده می کنید، باید متن جستجو را با کد زیر فعال کنید :
1 | >db.adminCommand({setParameter:true,textSearchEnabled:true}) |
سند زیر را در مجموعه پست هایی که حاوی متن پست و برچسب های آن است در نظر بگیرید :
1 2 3 4 5 6 7 | { "post_text": "enjoy the mongodb articles on tutorialspoint", "tags": [ "mongodb", "tutorialspoint" ] } |
سپس ما یک فهرست متن در فیلد post_text ایجاد خواهیم کرد تا بتوانیم در متن پست هایمان جستجو کنیم :
1 | >db.posts.ensureIndex({post_text:"text"}) |
حالا که ما فهرست متن را در فیلد post_text ایجاد کرده ایم، ما برای همه پست هایی که کلمه ی tutorialspoint در متن خود دارند جستجو می کنیم.
1 | >db.posts.find({$text:{$search:"tutorialspoint"}}) |
دستور بالا اسناد زیر را که کلمه tutorialspoint را در متن پست های خود دارند باز می گرداند
1 2 3 4 5 6 7 8 9 10 | { "_id" : ObjectId("53493d14d852429c10000002"), "post_text" : "enjoy the mongodb articles on tutorialspoint", "tags" : [ "mongodb", "tutorialspoint" ] } { "_id" : ObjectId("53493d1fd852429c10000003"), "post_text" : "writing tutorials on mongodb", "tags" : [ "mongodb", "tutorial" ] } |
اگر از نسخه های قدیمی MongoDB استفاده می کنید، باید از دستور زیر استفاده کنید:
1 | >db.posts.runCommand("text",{search:" tutorialspoint "}) |
با استفاده از جستجوی متن، کارایی جستجو در مقایسه با جستجوی عادی بسیار بهبود می یابد.
برای حذف یک فهرست متن موجود، ابتدا اسم فهرست را با استفاده از کوئری زیر پیدا کنید :
1 | >db.posts.getIndexes() |
پس از دریافت نام فهرست خود از کوئری بالا، دستور زیر را اجرا کنید. در اینجا، post_text_text نام فهرست است.
1 | >db.posts.dropIndex("post_text_text") |
آموزش جستجوی متن در MongoDB که شامل ایجاد فهرست متن در MongoDB و حذف فهرست متن در MongoDB می شد را به اتمام رساندیم با ما همراه باشید تا در جلسه بعد عبارات منظم در MongoDB را یاد بگیرید.