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