কম্পিউটার টিউটোরিয়াল

MongoDB-এ টেক্সট সার্চের জন্য টেক্সট ইন্ডেক্স তৈরি করা


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" নেই, তাই ফলাফলে আসেনি।


  1. MongoDB-তে createIndex() দিয়ে নেস্টেড ফিল্ডে ইন্ডেক্স তৈরি করা

  2. MongoDB $regex অপারেটর: কেস-ইনসেনসিটিভ সার্চ (i ফ্ল্যাগ)

  3. MySQL-এ ডিলিমিটার বা সীমারেখায় घিরা টেক্সট খুঁজে বের করা

  4. জাভা ব্যবহার করে MongoDB-এ ইনডেক্স কীভাবে তৈরি করবেন?