इस अध्याय में, हम MongoDB की पूर्ण-पाठ खोज का परिचय देंगे, जो SQL के "like" ऑपरेटर से भिन्न है। MongoDB की पूर्ण-पाठ खोज परम्परागत "like" के अनुपालन के मुकाबले पाठ खोज के लिए अधिक दक्ष है।
परीक्षण डेटा तैयार करें
स्टोर्स संग्रह में कुछ रिकॉर्ड डालें
db.stores.insert(
[
{ _id: 1, name: "Java Hut", description: "कॉफ़ी और केक" },
{ _id: 2, name: "Burger Buns", description: "गोर्मेट हैम्बर्गर" },
{ _id: 3, name: "Coffee Shop", description: "सिर्फ कॉफ़ी" },
{ _id: 4, name: "Clothes Clothes Clothes", description: "डिस्काउंट कपड़े" },
{ _id: 5, name: "Java Shopping", description: "इंडोनेशियाई माल" }
]
)
पाठ इंडेक्स बनाएँ
पूर्ण-पाठ खोज की क्षमता का उपयोग करने के लिए, आपको एक पाठ इंडेक्स बनाने की आवश्यकता है। उदाहरण:
db.stores.createIndex( { name: "text", description: "text" } )
स्पष्टीकरण:
- नाम और विवरण के लिए पाठ प्रकार का इंडेक्स बनाएँ।
नोट: संग्रह केवल एक पाठ इंडेक्स की अनुमति देता है, लेकिन एक पाठ इंडेक्स में कई फ़ील्ड शामिल किए जा सकते हैं।
$text ऑपरेटर
पाठ खोज के लिए $text ऑपरेटर का उपयोग करें।
सिंटैक्स:
{ $text: { $search: "खोज की जानकारी" } }
उदाहरण:
db.stores.find( { $text: { $search: "java coffee shop" } } )
स्पष्टीकरण:
- नाम और विवरण फ़ील्ड में "कॉफ़ी", "शॉप", और "जावा" शब्द वाले दस्तावेज़ खोजें।
आउटपुट:
{ "_id" : 3, "name" : "Coffee Shop", "description" : "सिर्फ कॉफ़ी" }
{ "_id" : 1, "name" : "Java Hut", "description" : "कॉफ़ी और केक" }
{ "_id" : 5, "name" : "Java Shopping", "description" : "इंडोनेशियाई माल" }
वाक्य खोज
db.stores.find( { $text: { $search: "\"कॉफ़ी शॉप\"" } } )
आउटपुट
{ "_id" : 3, "name" : "Coffee Shop", "description" : "सिर्फ कॉफ़ी" }
महत्व से सम्बंधित क्रमबद्धी
डिफ़ॉल्ट रूप से, $text पुण्य परिणाम अक्रमबद्ध होते हैं। $text पुण्य से प्रत्येक दस्तावेज़ के महत्व के लिए एक स्कोर (textScore) की गणना करता है। हम इस स्कोर का उपयोग करके इन दस्तावेज़ को ऊपर से उच्च महत्वपूर्णता वाले दस्तावेज़ को क्रमबद्ध करने और प्रदर्शित करने के लिए इसका उपयोग कर सकते हैं।
db.stores.find(
{ $text: { $search: "java coffee shop" } },
{ score: { $meta: "textScore" } } // घोषित करें कि textScore महत्वपूर्णता स्कोर लौटाने के लिए
).sort( { score: { $meta: "textScore" } } ) // textScore का उपयोग करके क्रमबद्धी निर्धारित करें
नोट: MongoDB पूर्ण-पाठ खोज चीनी मुहावरों के लिए बहुत अच्छा समर्थन नहीं प्रदान करता है।