MongoDB-এ টেক্সট ইন্ডেক্স ও $text/$search ব্যবহার করে ফুল-টেক্সট সার্চ
MongoDB-এ প্রফেশনাল টেক্সট সার্চের জন্য টেক্সট ইন্ডেক্স তৈরি করে $text ও $search অপারেটর ব্যবহার করা হয়। এটি স্টেমিং, কেস-ইনসেনসিটিভ, ফ्रेज সার্চ সাপোর্ট করে।
উদাহরণ: টেক্সট ইন্ডেক্স তৈরি ও ডেটা ইনসার্ট
> db.demo156.createIndex({"StudentName":"text"});
{ "createdCollectionAutomatically" : true, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }
> db.demo156.insertOne({"StudentName":"Chris Brown"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3547e8fdf09dd6d08539e6") }
> db.demo156.insertOne({"StudentName":"John Doe"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3547f2fdf09dd6d08539e7") }
> db.demo156.insertOne({"StudentName":"John Smith"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3547f7fdf09dd6d08539e8") }
সব ডকুমেন্ট দেখানো
> db.demo156.find();
আউটপুট:
{ "_id" : ObjectId("5e3547e8fdf09dd6d08539e6"), "StudentName" : "Chris Brown" }
{ "_id" : ObjectId("5e3547f2fdf09dd6d08539e7"), "StudentName" : "John Doe" }
{ "_id" : ObjectId("5e3547f7fdf09dd6d08539e8"), "StudentName" : "John Smith" }
টেক্সট সার্চ কোয়ারি ("John" শব্দ খুঁজুন)
> db.demo156.find({ $text: { $search: "John" } } )
আউটপুট:
{ "_id" : ObjectId("5e3547f7fdf09dd6d08539e8"), "StudentName" : "John Smith" }
{ "_id" : ObjectId("5e3547f2fdf09dd6d08539e7"), "StudentName" : "John Doe" }
ব্যাখ্যা
createIndex({"StudentName":"text"})— টেক্সট ইন্ডেক্স তৈরি (এক কালেকশনে একটাই টেক্সট ইন্ডেক্স থাকতে পারে, কিন্তু কম্পাউন্ড হতে পারে)।{$text: {$search: "John"}}— "John" শব্দটা যেকোনো টেক্সট-ইন্ডেক্সড ফিল্ডে খুঁজে।- ফলাফল রিলেভেন্স স্কোর অনুযায়ী সর্টেড আসে (স্কোর দেখতে
{score: {$meta: "textScore"}}প্রজেকশনে যোগ করুন)। - অপশন:
$search: "\"John Doe\""(ফ्रेज),$search: "John -Doe"(নেগেটিভ)।
সীমাবদ্ধতা: টেক্সট ইন্ডেক্স স্পেস নিবে, রাইট-টু-লেফট ভাষায় লিমিটেশন আছে। বাংলা সার্চের জন্য কাস্টম অ্যানালাইজার বা এटलাস সার্চ প্রয়োজন।