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