MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

मोंगोडब पाठ कई क्षेत्रों की खोज करता है

मोंगोडब में "पाठ खोज" अवधारणा उस तरह काम नहीं करती है। इसके बजाय यहाँ अवधारणा यह है कि आप अपने "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
}

जो "दोनों" सूचकांक में निर्दिष्ट सभी क्षेत्रों पर खोज करता है और इस मामले में "उपनगर" क्षेत्र को दिए गए अतिरिक्त "वजन" को और भी अधिक लोकप्रिय रैंकिंग बनाने के लिए मानता है।

इसलिए आप शब्दों में अतिरिक्त शर्तों का उपयोग नहीं करते हैं, आप कई फ़ील्ड पर खोजने के लिए "एक" टेक्स्ट क्वेरी स्ट्रिंग में शब्दों के "सभी" डालते हैं।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगो संग्रह छोड़ना डिस्क स्थान साफ़ नहीं कर रहा है

  2. एक मोंगोडब डेटाबेस का नाम कैसे बदलें

  3. rs.initiate () को कॉल किए बिना मोंगोडब प्रतिकृति सेट को कैसे प्रारंभ करें?

  4. मोंगोडब में स्ट्रिंग की लंबाई का चयन करें

  5. मोंगोडब में नेस्टेड दस्तावेज़ में क्वेरी