MongoDB-এ createIndex() দিয়ে টেক্সট ইন্ডেক্স তৈরি এবং $text সার্চ
MongoDB-এ ফুল-টেক্সট সার্চ (Full-Text Search) করার জন্য ফিল্ডে টেক্সট ইন্ডেক্স তৈরি করতে হয়। এরপর $text এবং $search অপারেটর ব্যবহার করে সার্চ করা যায়।
১. কালেকশন ও নমুনা ডেটা তৈরি
> db.demo331.insertOne({"Words":"This is a MySQL"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e521c35f8647eb59e562089") }
> db.demo331.insertOne({"Words":"THIS is a MongoDB"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e521c36f8647eb59e56208a") }
২. সব ডকুমেন্ট দেখানো
> db.demo331.find();
আউটপুট:
{ "_id" : ObjectId("5e521c35f8647eb59e562089"), "Words" : "This is a MySQL" }
{ "_id" : ObjectId("5e521c36f8647eb59e56208a"), "Words" : "THIS is a MongoDB" }
৩. টেক্সট ইন্ডেক্স তৈরি করা
> db.demo331.createIndex( {Words: "text" } );
{ "createdCollectionAutomatically" : false, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }
৪. টেক্সট সার্চ করা (MySQL শব্দ খোঁজা)
> db.demo331.find({$text:{$search:"MySQL"}});
৫. ফলাফল
{ "_id" : ObjectId("5e521c35f8647eb59e562089"), "Words" : "This is a MySQL" }
ব্যাখ্যা:
createIndex({Words: "text"})- Words ফিল্ডে টেক্সট ইন্ডেক্স তৈরি করে। একটি কালেকশনে শুধু একটি টেক্সট ইন্ডেক্স থাকতে পারে।$text: {$search: "MySQL"}- "MySQL" শব্দটি যে ডকুমেন্টে আছে সেগুলো খুঁজে বের করে।- কেস-ইনসেনসিটিভ: "MySQL" এবং "mysql" দুটোই মিলবে।
- স্টপ ওয়ার্ডস (the, is, a ইত্যাদি) অটোমেটিক্যালি বাদ দেয়।
দ্বিতীয় ডকুমেন্টে "MongoDB" আছে, "MySQL" নেই, তাই ফলাফলে আসেনি।