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. कॉन्टेंट कनेक्टर, आइटम (मेटाडेटा और हैश) को इंडेक्स करने की सूची में शामिल करने के लिए, items.push का इस्तेमाल करता है. इससे आइटम की स्थिति (MODIFIED, NEW_ITEM, DELETED) तय होती है. खास तौर पर:

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

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

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

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

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

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

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

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

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

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

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

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

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

  5. deleteQueueItems तरीका, "लाइन 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 का इस्तेमाल करता है. आइटम को ACCEPTED स्टेटस तब ही मिलता है, जब Cloud Search, आइटम को प्रोसेस कर लेता है.

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

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

कतार में ऑपरेशन (कनेक्टर 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 वैल्यू के साथ कॉल किया जाता है.