मोंगोडब में "पाठ खोज" अवधारणा उस तरह काम नहीं करती है। इसके बजाय यहाँ अवधारणा यह है कि आप अपने "text index" में "एकाधिक फ़ील्ड" को परिभाषित करते हैं। और बस शर्तें खोजें।
मान लें कि आपके पास "सामान" इस तरह है:
{ "_id" : ObjectId("55ba22294bde97b581332979"), "title" : "Hello there" },
{ "_id" : ObjectId("55ba22414bde97b58133297a"), "title" : "Hello world" },
{
"_id" : ObjectId("55ba22594bde97b58133297b"),
"title" : "Hello world",
"suburb" : "melbourne"
}
फिर मैं इस तरह एक टेक्स्ट इंडेक्स बनाने का फैसला करता हूं:
db.junk.createIndex(
{ "title": "text", "suburb": "text" },
{ "weights": { "title": 10 } }
)
फिर मैं $textका उपयोग करके एक खोज करता हूं कोड>
:
db.junk.find(
{ "$text": { "$search": "Hello World Melbourne" } },
{ "score": { "$meta": "textScore" } }
).sort({ "score": { "$meta": "textScore" } })
जो परिणाम देता है:
{
"_id" : ObjectId("55ba22594bde97b58133297b"),
"title" : "Hello world",
"suburb" : "melbourne",
"score" : 11.5
},
{
"_id" : ObjectId("55ba22414bde97b58133297a"),
"title" : "Hello world",
"score" : 1.5
},
{
"_id" : ObjectId("55ba22294bde97b581332979"),
"title" : "Hello there",
"score" : 1
}
जो "दोनों" सूचकांक में निर्दिष्ट सभी क्षेत्रों पर खोज करता है और इस मामले में "उपनगर" क्षेत्र को दिए गए अतिरिक्त "वजन" को और भी अधिक लोकप्रिय रैंकिंग बनाने के लिए मानता है।
इसलिए आप शब्दों में अतिरिक्त शर्तों का उपयोग नहीं करते हैं, आप कई फ़ील्ड पर खोजने के लिए "एक" टेक्स्ट क्वेरी स्ट्रिंग में शब्दों के "सभी" डालते हैं।