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

Mongodb - एकाधिक पाठ अनुक्रमणिका:अनुक्रमणिका कुंजी पैटर्न बहुत बड़ा त्रुटि कोड 67

आपकी सुझाई गई संरचना में समस्या:

{
 keyword" : "Just an example query", 
 "rankings" :
    [{"rank" : 1, "domain" : "example1.com", "href" : "example1.com"},
     ...{ "rank" : 99, "domain" : "example99.com", "href" : "example99.com“}
 ]}
}

हालांकि अब आप ऐसा कर सकते हैं

db.ranking.ensureIndex({"rankings.href":"text", "rankings.domain":"text"}) 

और फिर क्वेरी चलाएँ जैसे:

db.ranking.find({$text:{$search:"example1"}});

यह अब संपूर्ण सरणी दस्तावेज़ लौटाएगा जहाँ सरणी तत्व का मिलान होता है।

आप संदर्भ देने पर विचार कर सकते हैं ताकि प्रत्येक रैंकिंग परिणाम एक अलग दस्तावेज़ हो और बहुत सारी जानकारी को दोहराने से बचने के लिए कीवर्ड और अन्य मेटा डेटा का संदर्भ दिया जाए।

तो, आपके पास एक कीवर्ड/मेटाडेटा दस्तावेज़ है जैसे:

{_id:1, "keyword":"example query", "querydate": date, "other stuff":"other meta data"},
{_id:2, "keyword":"example query 2", "querydate": date, "other stuff":"other meta data 2"}

और फिर एक परिणाम दस्तावेज़ जैसे:

{keyword_id:1, {"rank" : 1, "domain" : "example1.com", "href" : "example1.com"},
... keyword_id:1, {"rank" : 99, "domain" : "example99.com", "href" : "example99.com"},
 keyword_id:2, {"rank" : 1, "domain" : "example1.com", "href" : "example1.com"},
 ...keyword_id:2, {"rank" : 99, "domain" : "example99.com", "href" : "example99.com"}}

जहां keyword_id वापस (संदर्भ) कीवर्ड/मेटाडेटा तालिका से लिंक करता है - जाहिर है, व्यवहार में, _ids "_id" जैसा दिखेगा:"519817e508a16b447c00020e", लेकिन यह केवल पठनीयता के लिए है। अब आप अपने क्वेरी प्रकारों के आधार पर कीवर्ड_आईडी, डोमेन और href पर एक साथ या अलग-अलग इंडेक्स कर सकते हैं और आपको index key pattern too large error नहीं मिलेगी। और आपको लौटाए गए संपूर्ण सरणी के बजाय केवल एक मिलान करने वाला दस्तावेज़ मिलेगा।

मैं पूरी तरह से स्पष्ट नहीं हूं कि आपको अस्पष्ट/रेगेक्स शैली खोजों की आवश्यकता कहां है और क्या आप मेटाडेटा या सिर्फ href और डोमेन खोज रहे होंगे, लेकिन मुझे लगता है कि यह संरचना इंडेक्सिंग पर अधिकतम किए बिना इंडेक्सिंग के बारे में सोचना शुरू करने का एक क्लीनर तरीका होना चाहिए, पहले जैसा। यह आपको आपके क्वेरी पैटर्न के आधार पर, सामान्य इंडेक्स पर खोज को टेक्स्ट इंडेक्स के साथ संयोजित करने की भी अनुमति देगा।

आपको यह उत्तर मिल सकता है MongoDB संबंध:एम्बेड या संदर्भ? दस्तावेज़ संरचना पर विचार करते समय उपयोगी।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. दो क्षेत्रों के साथ MongoDB कुल सरणी

  2. स्प्रिंग डेटा MongoDB:BigInteger ObjectId रूपांतरण के लिए

  3. परिणामों को सीमित करने से पहले आप मोंगो को संग्रह को क्रमबद्ध करने के लिए कैसे कहते हैं?

  4. नेवला खाली वस्तुओं या सरणियों को हटा दें

  5. नेवला उप-दस्तावेज़ के संदर्भ में आबाद करता है