رفتن به نوشته‌ها

دسته: MongoDB (مونگو دی‌بی)

جزئیات و نکات تکمیلی text indexها

تا اینجای کار به شما خسته نباشید می گویم! مبحث text index ها نیز در سه قسمت آینده به پایان می رسد و در فصل بعدی به سراغ مباحث دیگر می رویم اما قبل از آن باید جزئیات ریزی در مورد text index ها را بررسی کنیم. اولین نکته مربوط به جست و جوی کلمات خاص است. ما تا این قسمت یاد گرفته ایم که با استفاده از text index ها می توان به دنبال کلمه ای خاص یا عبارتی خاص گشت اما برعکس این مسئله نیز قابل انجام است! یعنی ما می توانیم به MongoDB بگوییم که اگر رشته ای دارای کلمه ی مورد نظر ما بود، آن سند را از نتایج حذف کن! بگذارید برایتان یک مثال بزنم. ما می توانیم به دنبال کلمه ی awesome بگردیم (از همان کالکشن products استفاده می کنیم): db.products.find({$text: {$search: “awesome”}}).pretty() هر دو مقداری را پیدا می کنیم که کلمه ی awesome در آن وجود دارد: در نتیجه ی دوم کلمه ی t-shirt را نیز داریم. حالا فرض کنید کوئری ما بدین شکل باشد: به دنبال کلمه ی awesome بگرد، البته در سند هایی که حاوی کلمه ی t-shirt نباشند. برای انجام این کار کافی است علامت منفی (-) را به t-shirt اضافه کنیم: db.products.find({$text: {$search: “awesome -t-shirt”}}).pretty() با این کار فقط نتیجه ی زیر را می گیریم: “_id” : ObjectId(“5ebe3d68c8ead79df676bcfe”),
“title” : “A Book”,
“description” : “This is an awesome book about a young artist!”
به دلیل اینکه گفته ایم نباید در نتایج ما کلمه ی t-shirt وجود داشته باشد. ما می توانیم این کار را با کلمه ی book نیز انجام بدهیم: db.products.find({$text: {$search: “awesome -book”}}).pretty() تا نتیجه ی دیگر برایمان برگردانده شود: