Connector SDK और Cloud Search API की मदद से, Cloud Search इंडेक्सिंग क्यू बनाए जा सकते हैं. इन क्यू का इस्तेमाल इन कामों के लिए करें:
- हर दस्तावेज़ की स्थिति (स्टेटस, हैश वगैरह) बनाए रखें, ताकि आपका इंडेक्स सिंक में रहे.
- ट्रैवर्सल के दौरान खोजे गए इंडेक्स किए जाने वाले आइटम की सूची बनाए रखें.
- आइटम के स्टेटस के आधार पर, उन्हें प्राथमिकता दें.
- स्टेटस की जानकारी बनाए रखें, जैसे कि चेकपॉइंट और टोकन में बदलाव.
क्यू, इंडेक्स किए गए आइटम को असाइन किया गया लेबल होता है. जैसे, "डिफ़ॉल्ट".
स्टेटस और प्राथमिकता
किसी दस्तावेज़ की प्राथमिकता, उसके
ItemStatus
कोड पर निर्भर करती है. प्राथमिकता के क्रम में (सबसे ज़्यादा से सबसे कम), ये कोड इस्तेमाल किए जा सकते हैं:
ERROR: आइटम में एसिंक्रोनस गड़बड़ी हुई है. इसलिए, इसे फिर से इंडेक्स करना होगा.MODIFIED: आइटम को पहले इंडेक्स किया गया था, लेकिन अब यह रिपॉज़िटरी में बदल गया है.NEW_ITEM: आइटम को अब तक इंडेक्स नहीं किया गया है.ACCEPTED: आइटम को पहले इंडेक्स किया गया था और इसमें कोई बदलाव नहीं हुआ है.
एक ही स्टेटस वाले आइटम के लिए, ज़्यादा प्राथमिकता उन आइटम को मिलती है जो क्यू में सबसे ज़्यादा समय से हैं.
किसी नए या बदले हुए आइटम को इंडेक्स करना
पहली इमेज में, इंडेक्सिंग क्यू का इस्तेमाल करके, किसी नए या बदले हुए आइटम को इंडेक्स करने के तरीके के बारे में बताया गया है. इन चरणों में REST API कॉल दिखती हैं. एसडीके के बराबर चरणों के लिए, क्यू के ऑपरेशन (Connector SDK) देखें.
- कॉन्टेंट कनेक्टर, मेटाडेटा और हैश को क्यू में पुश करने के लिए,
items.pushका इस्तेमाल करता है.- अगर कनेक्टर में पुश
typeयाcontentHash, शामिल है, तो Cloud Search स्टेटस तय करता है. - जिन आइटम के बारे में जानकारी नहीं है उन्हें
NEW_ITEMस्टेटस मिलता है. - मैच होने वाले हैश वाले मौजूदा आइटम,
ACCEPTEDस्टेटस में बने रहते हैं. - अलग-अलग हैश वाले मौजूदा आइटम,
MODIFIEDस्टेटस में बदल जाते हैं.
- अगर कनेक्टर में पुश
- कनेक्टर, यह तय करने के लिए
items.pollका इस्तेमाल करता है कि किन आइटम को इंडेक्स करना है. Cloud Search, आइटम को प्राथमिकता के क्रम में दिखाता है. - कनेक्टर, रिपॉज़िटरी से आइटम वापस लेता है और इंडेक्स API के अनुरोध बनाता है.
- कनेक्टर, आइटम को इंडेक्स करने के लिए
items.indexका इस्तेमाल करता है. प्रोसेसिंग पूरी होने के बाद, आइटमACCEPTEDस्टेटस में आ जाता है.
किसी आइटम को मिटाना
पूरी तरह से ट्रैवर्सल की रणनीति में, आइटम को इंडेक्स करने और मिटाए गए आइटम का पता लगाने के लिए, दो क्यू का इस्तेमाल किया जाता है. दूसरी इमेज में, इस रणनीति में दूसरा ट्रैवर्सल दिखाया गया है.
- शुरुआती ट्रैवर्सल पर, कनेक्टर आइटम को "क्यू A" में
NEW_ITEMके तौर पर पुश करता है. हर आइटम को "A" लेबल मिलता है. - कनेक्टर, क्यू A को पोल करता है और आइटम को इंडेक्स करता है.
- दूसरे पूरे ट्रैवर्सल पर, कनेक्टर आइटम को "क्यू B" में पुश करता है.
- जिन आइटम के बारे में जानकारी नहीं है उन्हें "B" लेबल और
NEW_ITEMस्टेटस मिलता है. - मैच होने वाले हैश वाले मौजूदा आइटम का लेबल "B" में बदल जाता है और वे
ACCEPTEDस्टेटस में बने रहते हैं. - अलग-अलग हैश वाले मौजूदा आइटम का लेबल "B" में बदल जाता है और वे
MODIFIEDस्टेटस में आ जाते हैं.
- जिन आइटम के बारे में जानकारी नहीं है उन्हें "B" लेबल और
- कनेक्टर, क्यू B को पोल करता है और आइटम को इंडेक्स करता है.
- आखिर में, कनेक्टर, क्यू A पर
deleteQueueItemsको कॉल करता है. इससे पहले से इंडेक्स किए गए वे सभी आइटम मिट जाते हैं जिनका लेबल अब भी "A" है. - इसके बाद के ट्रैवर्सल में, दोनों क्यू की भूमिकाएं बदल जाती हैं.
क्यू के ऑपरेशन (Connector SDK)
आइटम को पुश करने के लिए,
pushItems
बिल्डर का इस्तेमाल करें. एसडीके, क्यू से आइटम को
प्राथमिकता के क्रम में अपने-आप पुल करता है, जिसमें Repository क्लास के
getDoc
तरीके का इस्तेमाल किया जाता है.
क्यू के ऑपरेशन (REST API)
- पुश करने के लिए:
Items.pushका इस्तेमाल करें. - पोल करने के लिए: इस्तेमाल करें
Items.poll.
इंडेक्सिंग के दौरान आइटम को पुश करने के लिए,
Items.index
का भी इस्तेमाल किया जा सकता है. इन आइटम को ACCEPTED स्टेटस अपने-आप मिल जाता है.
Items.push
इस तरीके से, क्यू में आईडी जोड़े जाते हैं.
type
से नतीजे तय होते हैं. नया आईडी पुश करने पर, NEW_ITEM स्टेटस वाली एंट्री जुड़ जाती है.
पोलिंग के दौरान, पेलोड का विकल्प वापस मिलता है.
पोल किए गए आइटम रिज़र्व होते हैं. इन्हें पोल करने के अन्य कॉल से वापस नहीं लाया जा सकता. Items.push का इस्तेमाल, type को NOT_MODIFIED, REPOSITORY_ERROR या REQUEUE पर सेट करके करने से, एंट्री अनरिज़र्व हो जाती हैं.
हैश के साथ Items.push
पुश करने के अनुरोध में, मेटाडेटा या कॉन्टेंट के हैश की जानकारी दें.
Cloud Search, इनकी तुलना सेव की गई वैल्यू से करता है. अगर ये मैच नहीं होते हैं, तो एंट्री MODIFIED स्टेटस में बदल जाती है. मैच न होने वाले ऐसे आईडी जो मौजूद नहीं हैं, NEW_ITEM स्टेटस में बदल जाते हैं.
Items.poll
इस तरीके से, ज़्यादा प्राथमिकता वाली एंट्री वापस मिलती हैं. वापस लाई गई हर एंट्री, तब तक रिज़र्व रहती है, जब तक उसका टाइम आउट नहीं हो जाता, उसे फिर से इंडेक्स नहीं किया जाता या Items.push का इस्तेमाल करके उसे अनरिज़र्व नहीं किया जाता.