Google Cloud Search इंडेक्स करने की सूची

कनेक्टर SDK टूल और Google Cloud Search API, Cloud Search इंडेक्स करने की सूची बनाने की सुविधा देते हैं. इसका इस्तेमाल इन कामों के लिए किया जाता है:

  • हर दस्तावेज़ की स्थिति (स्टेटस, हैश वैल्यू वगैरह) को बनाए रखें. इसका इस्तेमाल आपके इंडेक्स को, रिपॉज़िटरी के साथ सिंक रखने के लिए किया जा सकता है.

  • ट्रैवर्सल प्रोसेस के दौरान खोजे गए आइटम, इंडेक्स किए जाने वाले आइटम की सूची बनाए रखें.

  • आइटम की स्थिति के आधार पर, सूची में मौजूद आइटम को प्राथमिकता दें.

  • बेहतर इंटिग्रेशन के लिए स्टेट की अतिरिक्त जानकारी बनाए रखें. जैसे, चेकपॉइंट, बदलाव वाले टोकन वगैरह.

सूची, वह लेबल होता है जो इंडेक्स किए गए किसी आइटम के लिए असाइन किया जाता है. जैसे, डिफ़ॉल्ट सूची के लिए "डिफ़ॉल्ट" या सूची B के लिए "B".

स्थिति और प्राथमिकता

सूची में दस्तावेज़ की प्राथमिकता उसके ItemStatus कोड पर आधारित होती है. प्राथमिकता के हिसाब से, संभावित ItemStatus कोड यहां दिए गए हैं (सबसे पहले हैंडल किए जाने के बाद, सबसे पहले हैंडल किए जाते हैं):

  • ERROR - इंडेक्स करने के दौरान, आइटम को एसिंक्रोनस गड़बड़ी हुई. इसलिए, इसे फिर से इंडेक्स करना होगा.

  • MODIFIED - वह आइटम जिसे पहले इंडेक्स किया गया था और जिसे पिछली बार इंडेक्स किए जाने के बाद, डेटा स्टोर करने की जगह में बदला गया है.

  • NEW_ITEM - वह आइटम जिसे इंडेक्स नहीं किया गया है.

  • ACCEPTED - ऐसा दस्तावेज़ जिसे पहले इंडेक्स किया गया था और जिसे पिछली बार इंडेक्स किए जाने के बाद से, डेटा स्टोर करने की जगह में बदला नहीं गया है.

जब एक सूची में मौजूद दो आइटम का स्टेटस एक जैसा होता है, तो ज़्यादा प्राथमिकता उन आइटम को दी जाती है जो सूची में सबसे लंबे समय से मौजूद हैं.

नए या बदले गए आइटम को इंडेक्स करने के लिए, इंडेक्स करने की सूची का इस्तेमाल करने से जुड़ी खास जानकारी

पहली इमेज में, इंडेक्स करने के लिए बनाई गई सूची का इस्तेमाल करके, नए या बदले गए आइटम को इंडेक्स करने का तरीका बताया गया है. यहां दिया गया तरीका REST API कॉल को दिखाता है. मिलते-जुलते SDK टूल कॉल के लिए, सूची से जुड़ी कार्रवाइयां (कनेक्टर SDK टूल) देखें.

Google Cloud Search इंडेक्स करने की खास जानकारी
पहली इमेज. किसी आइटम को जोड़ने या अपडेट करने के तरीके को इंडेक्स करना
  1. कॉन्टेंट कनेक्टर, आइटम की स्थिति (MODIFIED, NEW_ITEM, DELETED) तय करने के लिए, आइटम (मेटाडेटा और हैश) को इंडेक्स की सूची में भेजने के लिए, items.push का इस्तेमाल करता है. खास तौर पर:

    • पुश करते समय, कनेक्टर साफ़ तौर पर पुश type या contentHash शामिल करता है.
    • अगर कनेक्टर में type शामिल नहीं है, तो Cloud Search आइटम की स्थिति तय करने के लिए, contentHash का इस्तेमाल अपने-आप करता है.
    • अगर आइटम के बारे में जानकारी नहीं है, तो आइटम की स्थिति NEW_ITEM पर सेट होती है.
    • अगर आइटम मौजूद है और हैश वैल्यू मैच करती हैं, तो स्टेटस को ACCEPTED के तौर पर रखा जाता है.
    • अगर आइटम मौजूद है और हैश अलग हैं, तो स्टेटस MODIFIED बन जाता है.

    आइटम की स्थिति तय करने के तरीके के बारे में ज़्यादा जानने के लिए, Cloud Search शुरू करने के ट्यूटोरियल में दिए गए GitHub के डेटा स्टोर करने की जगहों को ट्रैक करना सैंपल कोड देखें.

    आम तौर पर, पुश नोटिफ़िकेशन, कॉन्टेंट ट्रैवर्सल और/या कनेक्टर में बदलाव का पता लगाने की प्रोसेस से जुड़ा होता है.

  2. कॉन्टेंट कनेक्टर, सूची में मौजूद पोल items.poll का इस्तेमाल करके, इंडेक्स किए जाने वाले आइटम तय करता है. Cloud Search, कनेक्टर को बताता है कि किन आइटम को इंडेक्स करने की सबसे ज़्यादा ज़रूरत है. इन्हें पहले स्टेटस कोड और फिर सूची में समय के हिसाब से क्रम में लगाया जाता है.

  3. कनेक्टर इन आइटम को रिपॉज़िटरी से इंपोर्ट करता है और इंडेक्स एपीआई अनुरोध बनाता है.

  4. आइटम को इंडेक्स करने के लिए कनेक्टर, items.index का इस्तेमाल करता है. Cloud Search जब आइटम को प्रोसेस कर लेता है, तब ही आइटम ACCEPTED की स्थिति में पहुंचता है.

अगर कोई आइटम अब रिपॉज़िटरी में मौजूद नहीं है, तो कनेक्टर उसे मिटा भी सकता है या अगर उस आइटम में बदलाव नहीं किया गया है या सोर्स रिपॉज़िटरी से जुड़ी कोई गड़बड़ी होती है, तो उस आइटम को फिर से पुश कर सकता है. आइटम मिटाने के बारे में जानकारी के लिए, अगला सेक्शन देखें.

किसी आइटम को मिटाने के लिए, इंडेक्स की सूची का इस्तेमाल करने से जुड़ी खास जानकारी

फ़ुल-ट्रैवर्सल रणनीति, आइटम को इंडेक्स करने और मिटाए जाने का पता लगाने के लिए दो-सूची प्रोसेस का इस्तेमाल करती है. दूसरी इमेज में, इंडेक्स करने की दो सूचियों का इस्तेमाल करके, किसी आइटम को मिटाने का तरीका बताया गया है. खास तौर पर, दूसरी इमेज में फ़ुल-ट्रेवर्सल रणनीति का इस्तेमाल करके किया गया दूसरा ट्रेवर्सल दिखाया गया है. ये चरण, REST API कॉल का इस्तेमाल करते हैं. मिलते-जुलते SDK टूल कॉल के लिए, सूची से जुड़ी कार्रवाइयां (कनेक्टर SDK टूल) देखें.

Google Cloud Search इंडेक्स करने की खास जानकारी
दूसरी इमेज. आइटम मिटाना
  1. शुरुआती ट्रैवर्सल पर, कॉन्टेंट कनेक्टर items.push का इस्तेमाल करके, आइटम (मेटाडेटा और हैश) को इंडेक्स करने वाली सूची में, "queue A" के तौर पर NEW_ITEM भेजता है, क्योंकि यह सूची में मौजूद नहीं है. "सूची A" के लिए, हर आइटम को "A" लेबल असाइन किया जाता है. कॉन्टेंट को Cloud Search में इंडेक्स किया जाता है.

  2. कॉन्टेंट कनेक्टर, पोल की सूची A में items.poll का इस्तेमाल करके, यह तय करता है कि किस आइटम को इंडेक्स किया जाए. Cloud Search, कनेक्टर को बताता है कि किन आइटम को इंडेक्स करने की सबसे ज़्यादा ज़रूरत है. इन्हें पहले स्टेटस कोड और फिर सूची में समय के हिसाब से क्रम में लगाया जाता है.

  3. कनेक्टर इन आइटम को रिपॉज़िटरी से इंपोर्ट करता है और इंडेक्स एपीआई अनुरोध बनाता है.

  4. आइटम को इंडेक्स करने के लिए कनेक्टर, items.index का इस्तेमाल करता है. Cloud Search जब आइटम को प्रोसेस कर लेता है, तब ही आइटम ACCEPTED की स्थिति में पहुंचता है.

  5. deleteQueueItems तरीके को "queue B" पर कॉल किया जाता है. लेकिन, कोई भी आइटम पंक्ति B में नहीं भेजा गया है, इसलिए कुछ भी हटाया नहीं जा सकता.

  6. दूसरे पूरे ट्रैवर्सल पर, कॉन्टेंट कनेक्टर आइटम (मेटाडेटा और हैश) को पंक्ति B में पुश करने के लिए, items.push का इस्तेमाल करता है:

    • पुश करते समय, कनेक्टर साफ़ तौर पर पुश type या contentHash शामिल करता है.
    • अगर कनेक्टर में type शामिल नहीं है, तो Cloud Search आइटम की स्थिति तय करने के लिए, contentHash का इस्तेमाल अपने-आप करता है.
    • अगर आइटम की जानकारी नहीं है, तो आइटम की स्थिति NEW_ITEM पर सेट कर दी जाती है और सूची का लेबल बदलकर "B" कर दिया जाता है.
    • अगर आइटम मौजूद है और हैश वैल्यू मैच करती हैं, तो स्टेटस ACCEPTED के तौर पर और सूची का लेबल बदलकर "B" कर दिया जाता है.
    • अगर आइटम मौजूद है और हैश अलग हैं, तो स्थिति MODIFIED हो जाती है और सूची का लेबल बदलकर "B" हो जाता है.
  7. कॉन्टेंट कनेक्टर, सूची में मौजूद पोल items.poll का इस्तेमाल करके, इंडेक्स किए जाने वाले आइटम तय करता है. Cloud Search, कनेक्टर को बताता है कि किन आइटम को इंडेक्स करने की सबसे ज़्यादा ज़रूरत है. इन्हें पहले स्टेटस कोड और फिर सूची में समय के हिसाब से क्रम में लगाया जाता है.

  8. कनेक्टर इन आइटम को रिपॉज़िटरी से इंपोर्ट करता है और इंडेक्स एपीआई अनुरोध बनाता है.

  9. आइटम को इंडेक्स करने के लिए कनेक्टर, items.index का इस्तेमाल करता है. Cloud Search जब आइटम को प्रोसेस कर लेता है, तब ही आइटम ACCEPTED की स्थिति में पहुंचता है.

  10. आखिर में, deleteQueueItems को सूची A में रखा जाता है, ताकि पहले से इंडेक्स किए गए उन सभी CCloud Search आइटम को मिटाया जा सके जिनमें अब भी "A" लेबल मौजूद है.

  11. बाद के पूरे ट्रैवर्सल के साथ, इंडेक्स करने के लिए इस्तेमाल की गई सूची और मिटाने के लिए इस्तेमाल की गई सूची को बदल दिया जाता है.

सूची से जुड़ी कार्रवाइयां (कनेक्टर SDK टूल)

कॉन्टेंट कनेक्टर 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 पर किए गए दूसरे कॉल से वापस नहीं किया जा सकता. 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 को type NOT_MODIFIED, REPOSITORY_ERROR या REQUEUE की वैल्यू के साथ कॉल किया जाता है.