कनेक्टर SDK टूल और Google Cloud Search API, Cloud Search इंडेक्स करने की सूची बनाने की अनुमति देते हैं. इसका इस्तेमाल नीचे दिए गए कामों के लिए किया जाता है:
हर दस्तावेज़ की स्थिति, जैसे कि स्थिति, हैश वैल्यू वगैरह को बनाए रखना. इसका इस्तेमाल, आपके इंडेक्स को रिपॉज़िटरी के साथ सिंक रखने के लिए किया जा सकता है.
ट्रैवर्सल प्रोसेस के दौरान इंडेक्स किए जाने वाले आइटम की सूची बनाए रखें.
आइटम की स्थिति के आधार पर, सूची में मौजूद आइटम को प्राथमिकता दें.
बेहतर इंटिग्रेशन के लिए, स्थिति के बारे में अतिरिक्त जानकारी बनाए रखें. जैसे, चेकपॉइंट, बदलाव टोकन वगैरह.
सूची एक लेबल है, जो इंडेक्स किए गए किसी आइटम को असाइन किया जाता है. जैसे, डिफ़ॉल्ट सूची के लिए "डिफ़ॉल्ट" या सूची B के लिए "B".
स्थिति और प्राथमिकता
सूची में दस्तावेज़ की प्राथमिकता, उसके
ItemStatus
कोड के हिसाब से तय होती है. प्राथमिकता के हिसाब से, नीचे दिए गए
ItemStatus
कोड हो सकते हैं (पहले इन्हें हैंडल किया जाता है और आखिरी में हैंडल किया जाता है):
ERROR
- इंडेक्स करते समय आइटम में एसिंक्रोनस गड़बड़ी हुई. इसलिए, इसे फिर से इंडेक्स करना होगा.MODIFIED
- ऐसा आइटम जिसे पहले इंडेक्स किया गया था और पिछली बार इंडेक्स होने के बाद से, डेटा स्टोर करने की जगह में बदला गया है.NEW_ITEM
- वह आइटम जिसे इंडेक्स नहीं किया गया है.ACCEPTED
- ऐसा दस्तावेज़ जिसे पहले इंडेक्स किया गया था और पिछली बार इंडेक्स होने के बाद से, डेटा स्टोर करने की जगह में कोई बदलाव नहीं किया गया है.
जब सूची में मौजूद दो आइटम की स्थिति एक जैसी होती है, तो उन आइटम को ज़्यादा प्राथमिकता दी जाती है जो लंबे समय से सूची में हैं.
नए या बदले गए आइटम को इंडेक्स करने के लिए, इंडेक्स करने की सूची के इस्तेमाल के बारे में खास जानकारी
पहली इमेज में इंडेक्स करने की सूची का इस्तेमाल करके, नए या बदले गए आइटम को इंडेक्स करने का तरीका दिखाया गया है. यह तरीका REST API कॉल दिखाता है. मिलते-जुलते SDK कॉल के लिए, सूची की कार्रवाइयां (कनेक्टर SDK टूल) देखें.
![Google Cloud Search इंडेक्स करने के बारे में खास जानकारी](https://developers-dot-devsite-v2-prod.appspot.com/static/cloud-search/images/architecture-queues-add.png?authuser=3&hl=hi)
कॉन्टेंट कनेक्टर, आइटम (मेटाडेटा और हैश) को इंडेक्स करने की सूची में पुश करने के लिए
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, आइटम की प्रोसेसिंग पूरी कर लेता है.
अगर किसी आइटम को डेटा स्टोर करने की जगह में अब मौजूद नहीं है, तो कनेक्टर उसे मिटा सकता है. इसके अलावा, अगर आइटम में बदलाव नहीं किया गया है या सोर्स डेटा स्टोर करने की कोई गड़बड़ी हुई है, तो कनेक्टर उसे फिर से पुश कर सकता है. आइटम मिटाने के बारे में जानकारी के लिए, अगला सेक्शन देखें.
किसी आइटम को मिटाने के लिए, इंडेक्स करने की सूची के इस्तेमाल के बारे में खास जानकारी
फ़ुल-ट्रैवर्सल रणनीति के तहत, आइटम इंडेक्स करने और मिटाए गए आइटम का पता लगाने के लिए, दो लाइन वाली प्रोसेस का इस्तेमाल किया जाता है. दूसरी इमेज में, इंडेक्स करने वाली दो सूचियों का इस्तेमाल करके, किसी आइटम को मिटाने का तरीका दिखाया गया है. खास तौर पर, इमेज 2 में फ़ुल-ट्रैवर्सल रणनीति का इस्तेमाल करके दूसरा ट्रैवर्सल दिखाया गया है. यह तरीका REST API कॉल का इस्तेमाल करता है. मिलते-जुलते SDK टूल कॉल के लिए, सूची में कार्रवाई (कनेक्टर SDK टूल) देखें.
![Google Cloud Search इंडेक्स करने के बारे में खास जानकारी](https://developers-dot-devsite-v2-prod.appspot.com/static/cloud-search/images/architecture-queues-delete.png?authuser=3&hl=hi)
शुरुआती ट्रैवर्सल में कॉन्टेंट कनेक्टर, आइटम (मेटाडेटा और हैश) को इंडेक्स करने की सूची, "सूची A"
NEW_ITEM
में पुश करने के लिएitems.push
का इस्तेमाल करता है, क्योंकि यह सूची में नहीं होता. "सूची A" के लिए हर आइटम को "A" लेबल असाइन किया जाता है. कॉन्टेंट को Cloud Search में इंडेक्स किया जाता है.कॉन्टेंट कनेक्टर, पोल सूची A के लिए
items.poll
का इस्तेमाल करता है, ताकि यह तय किया जा सके कि आइटम को इंडेक्स करना है या नहीं. Cloud Search, कनेक्टर को बताता है कि किन आइटम को इंडेक्स करने की सबसे ज़्यादा ज़रूरत है. इसके लिए, सबसे पहले उन्हें स्टेटस कोड और उसके बाद, सूची में सबसे ऊपर लगे समय के हिसाब से क्रम में लगाया जाता है.कनेक्टर इन आइटम को रिपॉज़िटरी से हासिल करता है और इंडेक्स एपीआई अनुरोध बनाता है.
कनेक्टर, आइटम को इंडेक्स करने के लिए
items.index
का इस्तेमाल करता है.ACCEPTED
स्थिति डालने के बाद ही Cloud Search, आइटम की प्रोसेसिंग पूरी कर लेता है.इसके लिए,
deleteQueueItems
तरीके का इस्तेमाल "Que B" पर किया जाता है. हालांकि, सूची B में कोई भी आइटम नहीं भेजा गया है. इसलिए, कोई भी आइटम मिटाया नहीं जा सकता.दूसरे पूरे ट्रेवर्सल पर, कॉन्टेंट कनेक्टर आइटम (मेटाडेटा और हैश) को सूची B में पुश करने के लिए
items.push
का इस्तेमाल करता है:- पुश करते समय, कनेक्टर साफ़ तौर पर पुश
type
याcontentHash
शामिल करता है. - अगर कनेक्टर में
type
शामिल नहीं है, तो आइटम की स्थिति तय करने के लिए, Cloud Search अपने-आपcontentHash
का इस्तेमाल करता है. - अगर आइटम की जानकारी नहीं है, तो आइटम की स्थिति
NEW_ITEM
पर सेट हो जाती है और सूची का लेबल "B" में बदल जाता है. - अगर आइटम मौजूद है और हैश वैल्यू मैच करती हैं, तो स्टेटस
ACCEPTED
के तौर पर रखा जाता है और सूची का लेबल "B" में बदल जाता है. - अगर आइटम मौजूद है और हैश में फ़र्क़ है, तो स्टेटस
MODIFIED
हो जाता है और सूची का लेबल "B" में बदल जाता है.
- पुश करते समय, कनेक्टर साफ़ तौर पर पुश
इंडेक्स किए जाने वाले आइटम तय करने के लिए, कॉन्टेंट कनेक्टर सूची की पोलिंग के लिए
items.poll
का इस्तेमाल करता है. Cloud Search, कनेक्टर को बताता है कि किन आइटम को इंडेक्स करने की सबसे ज़्यादा ज़रूरत है. इसके लिए, सबसे पहले उन्हें स्टेटस कोड और उसके बाद, सूची में सबसे ऊपर लगे समय के हिसाब से क्रम में लगाया जाता है.कनेक्टर इन आइटम को रिपॉज़िटरी से हासिल करता है और इंडेक्स एपीआई अनुरोध बनाता है.
कनेक्टर, आइटम को इंडेक्स करने के लिए
items.index
का इस्तेमाल करता है.ACCEPTED
स्थिति डालने के बाद ही Cloud Search, आइटम की प्रोसेसिंग पूरी कर लेता है.आखिर में,
deleteQueueItems
को सूची A में रखा जाता है. ऐसा, CCloud Search के पहले इंडेक्स किए गए उन सभी आइटम को मिटाने के लिए किया जाता है जिन पर अब भी "A" लेबल लगा है.बाद के पूरे ट्रेवर्सल के साथ, इंडेक्स करने के लिए इस्तेमाल की गई सूची और मिटाने के लिए इस्तेमाल की गई सूची को बदल दिया जाता है.
सूची से जुड़ी कार्रवाइयां (कनेक्टर SDK टूल)
Content Connector SDK टूल की मदद से, सूची में आइटम को पुश करने और वहां से वापस लाने के लिए काम किए जाते हैं.
किसी आइटम को पैकेज करने और सूची में भेजने के लिए, pushItems
बिल्डर क्लास का इस्तेमाल करें.
प्रोसेस करने के लिए सूची से आइटम लेने के लिए, आपको कुछ भी करने की ज़रूरत नहीं है. इसके बजाय, SDK टूल, डेटा स्टोर करने की जगह क्लास के 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
को दोबारा कॉल नहीं किया जा सकता.
type
के साथ NOT_MODIFIED
, REPOSITORY_ERROR
या REQUEUE
के तौर पर 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
के साथ कॉल किया जाता है.