MongoDB में टेक्स्ट इंडेक्स बनाकर अनइंडेक्स्ड फील्ड्स पर जटिल क्वेरी को तेज़ करना
MongoDB में अनइंडेक्स्ड टेक्स्ट फील्ड्स पर जटिल खोज क्वेरी को कुशल बनाने के लिए टेक्स्ट इंडेक्स बनाएं और $text ऑपरेटर का उपयोग करें।
उदाहरण: संग्रह, दस्तावेज़ और टेक्स्ट इंडेक्स बनाना
> db.demo400.insertOne({SubjectName:"Java Spring"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e610720fac4d418a0178572") }
> db.demo400.insertOne({SubjectName:"Spring Hibernate"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e61072dfac4d418a0178573") }
> db.demo400.insertOne({SubjectName:"Java Hibernate"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e610736fac4d418a0178574") }
> db.demo400.createIndex({SubjectName:"text"});
{ "createdCollectionAutomatically" : false, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }
सभी दस्तावेज़ देखना
> db.demo400.find();
आउटपुट:
{ "_id" : ObjectId("5e610720fac4d418a0178572"), "SubjectName" : "Java Spring" }
{ "_id" : ObjectId("5e61072dfac4d418a0178573"), "SubjectName" : "Spring Hibernate" }
{ "_id" : ObjectId("5e610736fac4d418a0178574"), "SubjectName" : "Java Hibernate" }
टेक्स्ट खोज क्वेरी ("Spring" खोजें)
> db.demo400.find({ $text: { $search: "Spring" } })
आउटपुट:
{ "_id" : ObjectId("5e61072dfac4d418a0178573"), "SubjectName" : "Spring Hibernate" }
{ "_id" : ObjectId("5e610720fac4d418a0178572"), "SubjectName" : "Java Spring" }
मुख्य अवधारणाएं:
- टेक्स्ट इंडेक्स:
{field: "text"}- पूर्ण टेक्स्ट खोज सक्षम करता है - $text ऑपरेटर: टेक्स्ट इंडेक्स का उपयोग करके खोज करता है
- $search: खोज स्ट्रिंग (स्पेस से अलग शब्द OR लॉजिक के साथ)
- स्कोर: परिणामों में
{score: {$meta: "textScore"}}प्रोजेक्ट करके प्रासंगिकता क्रम प्राप्त करें
उन्नत खोज:
// वाक्यांश खोज
db.demo400.find({ $text: { $search: "\"Java Spring\"" } })
// शब्द बहिष्कृत करें
db.demo400.find({ $text: { $search: "Spring -Hibernate" } })
// स्कोर के साथ सॉर्ट
db.demo400.find(
{ $text: { $search: "Spring" } },
{ score: { $meta: "textScore" } }
).sort({ score: { $meta: "textScore" } })
सीमाएं: एक संग्रह पर केवल एक टेक्स्ट इंडेक्स, केस-इनसेंसिटिव, स्टॉप वर्ड्स हटाए जाते हैं।