कॉन्टेंट कनेक्टर एक ऐसा सॉफ़्टवेयर प्रोग्राम है जिसका इस्तेमाल एंटरप्राइज़ के रिपॉज़िटरी को मैनेज कर सकता है और डेटा सोर्स को पॉप्युलेट कर सकता है. Google ये सुविधाएं देता है कॉन्टेंट कनेक्टर डेवलप करने के विकल्प:
कॉन्टेंट कनेक्टर का SDK टूल. अगर आपको प्रोग्रामिंग करना है, तो यह एक अच्छा विकल्प है जावा में. Content Connector SDK टूल एक रैपर है REST API, जिससे आपको तेज़ी से कनेक्टर बनाने की सुविधा मिलती है. कॉन्टेंट बनाने के लिए SDK टूल का इस्तेमाल करने वाले कनेक्टर के बारे में जानने के लिए, Content Connector SDK टूल का इस्तेमाल करके कॉन्टेंट कनेक्टर बनाएं.
कम लेवल का REST API या एपीआई लाइब्रेरी. इन विकल्पों का इस्तेमाल करें, अगर आपको या आपका कोड बेस REST API या लाइब्रेरी. REST API का इस्तेमाल करके कॉन्टेंट कनेक्टर बनाने के लिए, यहां जाएं: से REST API का इस्तेमाल करके कॉन्टेंट कनेक्टर बनाएं.
किसी सामान्य कॉन्टेंट कनेक्टर में ये काम किए जाते हैं:
- कॉन्फ़िगरेशन पैरामीटर को पढ़ता और उन्हें प्रोसेस करता है.
- यह इंडेक्स करने लायक डेटा के अलग-अलग हिस्सों को दिखाता है, जिन्हें "items" कहा जाता है. तीसरे पक्ष की ओर से डेटा स्टोर करने की जगह.
- यह ACL, मेटाडेटा, और कॉन्टेंट डेटा को इंडेक्स किए जा सकने वाले आइटम में जोड़ता है.
- आइटम को Cloud Search डेटा सोर्स में इंडेक्स करता है.
- (ज़रूरी नहीं) तीसरे पक्ष के कॉन्टेंट की सूचनाओं में बदलाव करने के लिए सुनता है डेटा स्टोर करने की जगह. बदलाव की सूचनाओं को इंडेक्स करने के अनुरोधों में बदल दिया जाता है, ताकि Cloud Search के डेटा सोर्स को तीसरे पक्ष की, डेटा स्टोर करने की जगह के साथ सिंक करना होगा. कॉन्टेंट बनाने कनेक्टर यह टास्क सिर्फ़ तब करता है, जब रिपॉज़िटरी में बदलाव का पता लगाने की सुविधा काम करती हो.
Content Connector SDK टूल का इस्तेमाल करके कॉन्टेंट कनेक्टर बनाएं
नीचे दिए गए सेक्शन में, कॉन्टेंट कनेक्टर SDK टूल.
डिपेंडेंसी सेट अप करें
SDK टूल का इस्तेमाल करने के लिए, आपको अपनी बिल्ड फ़ाइल में कुछ डिपेंडेंसी शामिल करनी होंगी. क्लिक करें अपने बिल्ड एनवायरमेंट की डिपेंडेंसी देखने के लिए, नीचे दिए गए टैब पर क्लिक करें:
Maven
<dependency>
<groupId>com.google.enterprise.cloudsearch</groupId>
<artifactId>google-cloudsearch-indexing-connector-sdk</artifactId>
<version>v1-0.0.3</version>
</dependency>
ग्रेडल
compile group: 'com.google.enterprise.cloudsearch',
name: 'google-cloudsearch-indexing-connector-sdk',
version: 'v1-0.0.3'
अपना कनेक्टर कॉन्फ़िगरेशन बनाएं
हर कनेक्टर की एक कॉन्फ़िगरेशन फ़ाइल होती है, जिसमें वे पैरामीटर होते हैं जिनका इस्तेमाल
कनेक्टर का इस्तेमाल करें, जैसे कि रिपॉज़िटरी का आईडी. पैरामीटर इस तरह परिभाषित किए गए हैं
की-वैल्यू पेयर, जैसे कि
api.sourceId=1234567890abcdef
.
Google Cloud Search SDK टूल में, Google से दिए गए कई कॉन्फ़िगरेशन शामिल हैं सभी कनेक्टर में इस्तेमाल होने वाले पैरामीटर. आपको नीचे दी गई जानकारी का एलान करना होगा आपकी कॉन्फ़िगरेशन फ़ाइल में Google से दिए गए पैरामीटर:
- कॉन्टेंट कनेक्टर के लिए, आपको
api.sourceId
का एलान करना होगा औरapi.serviceAccountPrivateKeyFile
, क्योंकि ये पैरामीटर जगह की पहचान करते हैं आपके रिपॉज़िटरी (डेटा स्टोर करने की जगह) को ऐक्सेस करने के लिए ज़रूरी है.
- आइडेंटिटी कनेक्टर के लिए, आपको
api.identitySourceId
का एलान करना होगा पैरामीटर आपके बाहरी आइडेंटिटी सोर्स की जगह की पहचान करता है. अगर आप उपयोगकर्ताओं को सिंक करते समय, आपकोapi.customerId
के लिए यूनीक आईडी के तौर पर भी एलान करना होगा आपके एंटरप्राइज़ के Google Workspace खाते से साइन इन करें.
जब तक कि आप Google की ओर से दिए जाने वाले अन्य ऐप्लिकेशन की डिफ़ॉल्ट वैल्यू को बदलना न चाहें पैरामीटर के साथ काम करता है, तो आपको उनकी जानकारी अपनी कॉन्फ़िगरेशन फ़ाइल में देने की ज़रूरत नहीं है. Google के दिए गए कॉन्फ़िगरेशन पैरामीटर के बारे में ज़्यादा जानकारी पाने के लिए, कुछ आईडी और कुंजियों को जनरेट करने का तरीका जानें, यहां देखें Google से दिए गए कॉन्फ़िगरेशन पैरामीटर.
डेटा स्टोर करने की जगह के हिसाब से बनाए गए पैरामीटर भी तय किए जा सकते हैं, ताकि कॉन्फ़िगरेशन फ़ाइल है.
कॉन्फ़िगरेशन फ़ाइल को कनेक्टर में पास करें
कॉन्फ़िगरेशन फ़ाइल को अपनेconfig
कनेक्टर. शुरू करते समय, -D
आर्ग्युमेंट का इस्तेमाल करके प्रॉपर्टी को सेट किया जा सकता है
कनेक्टर. उदाहरण के लिए, नीचे दिया गया निर्देश कनेक्टर को शुरू करता है
MyConfig.properties
कॉन्फ़िगरेशन फ़ाइल के साथ:
java -classpath myconnector.jar;... -Dconfig=MyConfig.properties MyConnector
अगर यह आर्ग्युमेंट मौजूद नहीं है, तो SDK टूल, डिफ़ॉल्ट कॉन्फ़िगरेशन को ऐक्सेस करने की कोशिश करता है
connector-config.properties
नाम वाली फ़ाइल.
अपनी ट्रैवर्सल रणनीति तय करें
कॉन्टेंट कनेक्टर का मुख्य काम, रिपॉज़िटरी और अपना डेटा इंडेक्स करता है. आपको इनके आधार पर एक ट्रैवर्सल रणनीति लागू करनी होगी: आपकी रिपॉज़िटरी में डेटा का लेआउट. अपने हिसाब से रणनीति बनाई जा सकती है या नीचे दी गई रणनीतियों का इस्तेमाल किया जा सकता है:
- पूरी ट्रैवर्सल रणनीति
एक पूरी ट्रैवर्सल रणनीति, डेटा स्टोर करने की पूरी जगह को स्कैन करती है और किसी चीज़ को ब्लाइंड करके इंडेक्स करती है हर आइटम. इस रणनीति का इस्तेमाल आम तौर पर तब किया जाता है, जब आपके पास डेटा स्टोर करने की जगह कम होती है और हर बार इंडेक्स करने पर पूरा ट्रैवर्सल करने का खर्च वहन कर सकते हैं.
यह ट्रैवर्सल रणनीति उन छोटे डेटा स्टोर करने की जगहों के लिए सही है जहां ज़्यादातर स्टैटिक, गैर-पदानुक्रमिक, डेटा. आप इस ट्रैवर्सल रणनीति का भी इस्तेमाल कर सकते हैं जब बदलाव का पता लगाना मुश्किल हो या डेटा स्टोर करने की जगह के साथ काम न करता हो.
- लिस्ट ट्रैवर्सल रणनीति
लिस्ट ट्रैवर्सल रणनीति की मदद से, डेटा स्टोर करने की पूरी जगह को स्कैन किया जाता है. इसमें, सभी चाइल्ड भी शामिल होते हैं नोड से हर आइटम की स्थिति तय की जा सकती है. इसके बाद, कनेक्टर एक सेकंड पास करें और सिर्फ़ उन आइटम को इंडेक्स करता है जो नए हैं या पिछले इंडेक्स करना. आम तौर पर, इस रणनीति का इस्तेमाल कन्वर्ज़न बढ़ाने के लिए किया जाता है मौजूदा इंडेक्स में अपडेट करता है (हर बार पूरा ट्रैवर्सल करने के बजाय इंडेक्स को अपडेट करने का समय तय करता है).
यह ट्रैवर्सल रणनीति तब काम आती है, जब बदलाव का पता लगाना मुश्किल हो या डेटा स्टोर करने की जगह के साथ काम नहीं करता, आपके पास बिना हैरारकी वाला डेटा है, और बहुत बड़े डेटा सेट पर काम करते हैं.
- ग्राफ़ ट्रैवर्सल
ग्राफ़ ट्रैवर्सल रणनीति, उस पूरे पैरंट नोड को स्कैन करती है जो तय करता है कि हर आइटम की स्थिति. इसके बाद, कनेक्टर दूसरा पास लेता है और सिर्फ़ रूट नोड में मौजूद आइटम नए हैं या उन्हें पिछली बार इंडेक्स होने के बाद अपडेट किया गया है. आखिर में, कनेक्टर कोई भी चाइल्ड आईडी पास करता है और फिर चाइल्ड नोड में आइटम इंडेक्स करता है जो नई हैं या जिन्हें अपडेट किया गया है. यह कनेक्टर इसके ज़रिए बार-बार चलता रहता है सभी चाइल्ड नोड तब तक उपलब्ध होंगे, जब तक सभी आइटम का पता नहीं चल जाता. आम तौर पर, ऐसा ट्रैवर्सल का इस्तेमाल, हैरारकी के हिसाब से स्टोर करने की ऐसी जगहों के लिए किया जाता है जहां सभी आईडी की लिस्टिंग व्यावहारिक.
यह रणनीति तब काम आती है, जब आपके पास हैरारकी के हिसाब से डेटा हो जिसे जैसे, डायरेक्ट्री या वेब पेजों की सीरीज़.
इनमें से हर ट्रैवर्सल रणनीति को एक टेंप्लेट कनेक्टर लागू करता है क्लास का इस्तेमाल किया जा सकता है. हालांकि, अपनी ट्रैवर्सल रणनीति को खुद लागू किया जा सकता है, लेकिन ये टेंप्लेट से आपके कनेक्टर के डेवलपमेंट में तेज़ी आती है. यहां की यात्रा पर हूं एक टेंप्लेट का इस्तेमाल करके कनेक्टर बनाएं, जिसे आपकी ट्रैवर्सल रणनीति:
- टेंप्लेट क्लास का इस्तेमाल करके पूरा ट्रेवर्सल कनेक्टर बनाना
- टेंप्लेट क्लास का इस्तेमाल करके सूची ट्रैवर्सल कनेक्टर बनाना
- टेंप्लेट क्लास का इस्तेमाल करके, ग्राफ़ ट्रैवर्सल कनेक्टर बनाना
टेंप्लेट क्लास का इस्तेमाल करके पूरा ट्रेवर्सल कनेक्टर बनाएं
दस्तावेज़ों का यह अनुभाग FullTraversalSample का उदाहरण.
कनेक्टर का एंट्री पॉइंट लागू करें
कनेक्टर का एंट्री पॉइंट
main()
तरीका. इस तरीके का मुख्य टास्क,
Application
क्लास और इसके शुरू
start()
का तरीका बताया गया है.
कॉल करने से पहले
application.start()
का इस्तेमाल करें
IndexingApplication.Builder
इंस्टैंशिएट करने के लिए क्लास
FullTraversalConnector
टेम्प्लेट. कॉन्टेंट बनाने
FullTraversalConnector
स्वीकार करता है
Repository
ऑब्जेक्ट है, जिसकी विधियों को आपने लागू किया है. नीचे दिया गया कोड स्निपेट दिखाता है कि
main()
तरीका लागू करने के लिए:
पर्दे के पीछे, SDK टूल
initConfig()
आपके कनेक्टर के main()
तरीके से किए गए कॉल के बाद
Application.build
.
कॉन्टेंट बनाने
initConfig()
तरीका
ये काम करता है:
-
Configuation.isInitialized()
कैसे पक्का किया जा सकता है किConfiguration
शुरू नहीं किया गया है. - Google से दिए गए मुख्य-वैल्यू के साथ
Configuration
ऑब्जेक्ट को शुरू करता है पेयर. हर की-वैल्यू पेयर,ConfigValue
ऑब्जेक्ट कोConfiguration
ऑब्जेक्ट में डालें.
Repository
इंटरफ़ेस को लागू करना
Repository
ऑब्जेक्ट का एकमात्र मकसद ट्रैवर्सल करना और
डेटा स्टोर करने की जगह के आइटम को इंडेक्स करना. इसका इस्तेमाल करते समय
टेंप्लेट इस्तेमाल किया है, तो आपको Repository
में सिर्फ़ कुछ तरीकों को बदलना होगा
इंटरफ़ेस पर क्लिक करें. आप जिन तरीकों को ओवरराइड करते हैं वे
का इस्तेमाल करें.
FullTraversalConnector
, इन तरीकों को ओवरराइड करें:
कॉन्टेंट बनाने
init()
तरीका. डेटा रिपॉज़िटरी (डेटा स्टोर की जगह) को सेट-अप करने और शुरू करने के लिए,init()
तरीका.कॉन्टेंट बनाने
getAllDocs()
तरीका. डेटा रिपॉज़िटरी में मौजूद सभी आइटम को देखने और इंडेक्स करने के लिए,getAllDocs()
तरीका. शेड्यूल किए गए हर ट्रैवर्सल के लिए इस तरीके को एक बार कॉल किया जाता है (जैसा कि आपके कॉन्फ़िगरेशन में बताया गया है).(ज़रूरी नहीं)
getChanges()
तरीका. अगर आपकी रिपॉज़िटरी में बदलाव का पता लगाने की सुविधा काम करती है, तोgetChanges()
तरीका. शेड्यूल की गई हर बढ़ोतरी के लिए, इस तरीके को एक बार कॉल किया जाता है ट्रैवर्सल (जैसा कि आपके कॉन्फ़िगरेशन में बताया गया है) और बदलाव किए गए आइटम वापस पाने के लिए उन्हें इंडेक्स न करें.(ज़रूरी नहीं)
close()
तरीका. अगर आपको रिपॉज़िटरी (डेटा स्टोर की जगह) में क्लीनअप करना है, तोclose()
को बदलें तरीका. कनेक्टर के बंद होने के दौरान, इस तरीके को एक बार कॉल किया जाता है.
हर तरीके के लिए
Repository
ऑब्जेक्ट कुछ ऐसा दिखाता है
ApiOperation
ऑब्जेक्ट है. ApiOperation
ऑब्जेक्ट, सिंगल या
शायद एक से ज़्यादा, IndexingService.indexItem()
कॉल करता है.
कस्टम कॉन्फ़िगरेशन पैरामीटर पाएं
अपने कनेक्टर के कॉन्फ़िगरेशन को मैनेज करने के लिए, आपको
कस्टम पैरामीटर
Configuration
ऑब्जेक्ट है. यह टास्क आम तौर पर इसमें किया जाता है
Repository
क्लास का
init()
तरीका.
Configuration
क्लास में अलग-अलग तरह का डेटा पाने के कई तरीके हैं
. हर तरीका, ConfigValue
ऑब्जेक्ट दिखाता है. इसके बाद, आपको
ConfigValue
ऑब्जेक्ट का इस्तेमाल करें
get()
पाने का तरीका बताया गया है.
यहां दिया गया स्निपेट:
FullTraversalSample
को वापस लाने का तरीका दिखाता है
Configuration
ऑब्जेक्ट से मिला, कस्टम पूर्णांक की वैल्यू:
कई वैल्यू वाला पैरामीटर पाने और पार्स करने के लिए, इनमें से किसी एक वैल्यू का इस्तेमाल करें
डेटा को अलग-अलग हिस्सों में पार्स करने के लिए, Configuration
क्लास के टाइप पार्सर.
ट्यूटोरियल कनेक्टर में नीचे दिया गया स्निपेट
getMultiValue
GitHub रिपॉज़िटरी के नामों की सूची पाने का तरीका:
पूरा ट्रैवर्सल परफ़ॉर्म करें
सेटिंग में एडमिन के किए गए बदलाव
getAllDocs()
का इस्तेमाल करें. getAllDocs()
तरीका, एक चेकपॉइंट स्वीकार करता है. Checkpoint का इस्तेमाल करके,
किसी आइटम को प्रोसेस करने में रुकावट आनी चाहिए. आपके
रिपॉज़िटरी में, यह तरीका अपनाएं getAllDocs()
:
- अनुमतियां सेट करें.
- उस आइटम के लिए मेटाडेटा सेट करें जिसे इंडेक्स किया जा रहा है.
- मेटाडेटा और आइटम को मिलाकर एक इंडेक्स करने की सुविधा बनाएं
RepositoryDoc
. - इंडेक्स किए जा सकने वाले हर आइटम को,
getAllDocs()
से मिले इटरेटर में पैकेज करें तरीका. ध्यान दें किgetAllDocs()
वास्तव मेंCheckpointCloseableIterable
इसका बार-बार इस्तेमाल किया जा सकता हैApiOperation
ऑब्जेक्ट हैं, जो एपीआई अनुरोध को दिखाने के लिए हर ऑब्जेक्ट कोRepositoryDoc
, जैसे कि इसे इंडेक्स करना.
अगर आइटम का सेट बहुत बड़ा है, तो एक कॉल में प्रोसेस नहीं किया जा सकता, तो
CANNOT TRANSLATE
hasMore(true)
का इस्तेमाल करें.
किसी आइटम के लिए अनुमतियां सेट करना
उपयोगकर्ताओं की पहचान करने के लिए, आपका रिपॉज़िटरी (डेटा स्टोर करने की जगह) ऐक्सेस कंट्रोल लिस्ट (ACL) का इस्तेमाल करता है या वे ग्रुप जिनके पास किसी आइटम का ऐक्सेस है. एसीएल, ग्रुप या उपयोगकर्ताओं के लिए आईडी की सूची होती है जो आइटम को ऐक्सेस कर सकते हैं.
आपको डेटा स्टोर करने की जगह में इस्तेमाल किए जाने वाले ACL का डुप्लीकेट बनाना होगा, ताकि यह पक्का किया जा सके कि सिर्फ़ वे उपयोगकर्ता ही इस्तेमाल किए जा रहे हैं अगर आपके पास किसी आइटम का ऐक्सेस है, तो वह खोज के नतीजे में उस आइटम को देख सकता है. कॉन्टेंट बनाने किसी आइटम को इंडेक्स करते समय उसके लिए ACL को शामिल करना ज़रूरी है, ताकि Google Cloud Search के पास सही लेवल का ऐक्सेस देने के लिए ज़रूरी जानकारी हो आइटम.
Content Connector SDK टूल की मदद से, एसीएल क्लास और तरीकों का एक बेहतर सेट उपलब्ध कराया जाता है ज़्यादातर डेटा स्टोर करने की जगहों के ACL का मॉडल बनाते हैं. आपको इसमें हर आइटम के लिए ACL का विश्लेषण करना होगा और Google Cloud Search के लिए संबंधित ACL बनाएं. आइटम को इंडेक्स करें. अगर डेटा स्टोर करने की जगह का ACL, ACL जैसे सिद्धांतों का इस्तेमाल करता है हो सकता है कि ACL पेचीदा हो जाए. Google पर ज़्यादा जानकारी पाने के लिए, Cloud Search ACL, इसे देखें Google Cloud Search ACL.
ध्यान दें: Cloud Search इंडेक्स करने वाला एपीआई, सिंगल-डोमेन ACL काम करता है. इस पर काम नहीं होता
का इस्तेमाल करने के लिए किया जा सकता है. इसका इस्तेमाल करें
Acl.Builder
क्लास का इस्तेमाल करें. यहां दिया गया कोड स्निपेट,
पूरे ट्रैवर्सल सैंपल से, इसकी अनुमति देता है
सभी उपयोगकर्ता या “प्रिंसिपल”
(getCustomerPrincipal()
)
सभी आइटम के “पाठक” होने के लिए
(.setReaders()
)
ध्यान दें.
डेटा स्टोर करने की जगह के लिए ACL को ठीक से मॉडल करने के लिए आपको ACL को समझना होगा. इसके लिए उदाहरण के लिए, हो सकता है कि आप किसी फ़ाइल सिस्टम में मौजूद फ़ाइलों को इंडेक्स कर रहे हों किसी तरह के इनहेरिटेंस मॉडल का इस्तेमाल करता है, जिसमें चाइल्ड फ़ोल्डर अनुमतियां इनहेरिट करता है . मॉडलिंग ACL इनहेरिटेंस के लिए अतिरिक्त जानकारी की आवश्यकता होती है इसमें शामिल किया गया Google Cloud Search एसीएल
किसी आइटम के लिए मेटाडेटा सेट करना
मेटाडेटा को Item
ऑब्जेक्ट में सेव किया जाता है. Item
बनाने के लिए, आपको इसकी ज़रूरत होगी
कम से कम यूनीक स्ट्रिंग आईडी, आइटम टाइप, एसीएल, यूआरएल, और आइटम का वर्शन होना चाहिए.
नीचे दिया गया कोड स्निपेट यह दिखाता है किItem
IndexingItemBuilder
हेल्पर क्लास
इंडेक्स किया जा सकने वाला आइटम बनाना
आइटम के लिए मेटाडेटा सेट करने के बाद, आप वास्तविक इंडेक्स करने योग्य बना सकते हैं
आइटम को
RepositoryDoc.Builder
क्लास. नीचे दिए गए उदाहरण में, इंडेक्स किया जा सकने वाला एक आइटम बनाने का तरीका बताया गया है.
RepositoryDoc
एक तरह का ApiOperation
है, जो
IndexingService.indexItem()
अनुरोध.
Google आपके यूआरएल पैरामीटर को कैसे इस्तेमाल करेगा, यह तय करने के लिए
setRequestMode()
तरीका
RepositoryDoc.Builder
क्लास का इस्तेमाल करें, ताकि इंडेक्स करने के अनुरोध की पहचान ASYNCHRONOUS
या SYNCHRONOUS
के तौर पर की जा सके:
ASYNCHRONOUS
- एसिंक्रोनस मोड का इस्तेमाल करने पर, पेज को इंडेक्स करने में ज़्यादा समय लगता है और यह इंडेक्स करने के अनुरोधों के लिए, बड़े पैमाने पर डेटा इकट्ठा करने की सुविधा देता है. एसिंक्रोनस मोड है इसका सुझाव, पूरे डेटा स्टोर करने की जगह के शुरुआती इंडेक्स (बैकफ़िल) के लिए दिया जाता है.
SYNCHRONOUS
- सिंक्रोनस मोड से, इंडेक्स करने के दौरान विज्ञापन दिखने में कम समय लगता है और
सीमित थ्रूपुट कोटा को पूरा करता है. सिंक्रोनस मोड है
अपडेट को इंडेक्स करने और रिपॉज़िटरी में बदलावों का सुझाव दिया जाता है. अगर आपने
कोई जानकारी नहीं है, तो अनुरोध मोड डिफ़ॉल्ट रूप से
SYNCHRONOUS
में सेट हो जाता है.
इंडेक्स हो सकने वाले हर आइटम को इटरेटर में पैकेज करें
getAllDocs()
तरीका, Iterator
दिखाता है, खास तौर पर
CheckpointCloseableIterable
,
में से
RepositoryDoc
ऑब्जेक्ट हैं. Google आपके यूआरएल पैरामीटर को कैसे इस्तेमाल करेगा, यह तय करने के लिए
CheckpointClosableIterableImpl.Builder
क्लास का इस्तेमाल करें. नीचे दिया गया कोड स्निपेट दिखाता है कि
का इस्तेमाल करें.
एसडीके, इटरेटर के अंदर मौजूद हर इंडेक्स कॉल को एक्ज़ीक्यूट करता है.
अगले चरण
यहां दिए गए कुछ तरीके आज़माएं:
- (ज़रूरी नहीं) अगर आपको लगता है कि साइट को इंडेक्स करने में ज़्यादा समय लग रहा है, तो
FullTraversalConnector
के लिए इंडेक्स करने की दर बढ़ाएं देखें. - (ज़रूरी नहीं)
close()
को लागू करना को बंद करने से पहले किसी भी संसाधन को रिलीज़ करने का तरीका बताएंगे. - (ज़रूरी नहीं) पहचान कनेक्टर बनाएं Content Connector SDK टूल का इस्तेमाल करके.
टेंप्लेट क्लास का इस्तेमाल करके सूची ट्रैवर्सल कनेक्टर बनाएं
Cloud Search इंडेक्स करने वाली सूची का इस्तेमाल, आईडी और हैश को होल्ड करने के लिए किया जाता है डेटा स्टोर करने की जगह में हर आइटम के लिए वैल्यू. लिस्ट ट्रैवर्सल कनेक्टर पुश करता है आइटम आईडी को Google Cloud Search इंडेक्स करने की सूची में जोड़ दिया जाता है और उन्हें एक बार में एक इंडेक्स करने में कितना समय लगेगा. Google Cloud Search, सूची बनाकर रखता है और आइटम की स्थिति तय करने के लिए, सूची में शामिल कॉन्टेंट की तुलना करें. जैसे, किसी आइटम के को डेटा स्टोर करने की जगह से मिटा दिया गया है. Cloud Search के बारे में ज़्यादा जानकारी पाने के लिए सूची को इंडेक्स करने के बारे में जानकारी, इसे देखें Cloud Search इंडेक्स करने की सूची.
दस्तावेज़ों का यह अनुभाग ListTraversalSample उदाहरण के लिए.
कनेक्टर का एंट्री पॉइंट लागू करें
कनेक्टर का एंट्री पॉइंट
main()
तरीका. इस तरीके का मुख्य टास्क,
Application
क्लास और इसके शुरू
start()
का तरीका बताया गया है.
कॉल करने से पहले
application.start()
का इस्तेमाल करें
IndexingApplication.Builder
इंस्टैंशिएट करने के लिए क्लास
ListingConnector
टेम्प्लेट. ListingConnector
Repository
ऑब्जेक्ट है, जिसकी विधियों को आपने लागू किया है. नीचे दिए गए स्निपेट में,
ListingConnector
और उससे जुड़े Repository
को इंस्टैंशिएट करें:
पर्दे के पीछे, SDK टूल
initConfig()
आपके कनेक्टर के main()
तरीके से किए गए कॉल के बाद
Application.build
.
initConfig()
तरीका:
-
Configuation.isInitialized()
कैसे पक्का किया जा सकता है किConfiguration
शुरू नहीं किया गया है. - Google से दिए गए मुख्य-वैल्यू के साथ
Configuration
ऑब्जेक्ट को शुरू करता है पेयर. हर की-वैल्यू पेयर,ConfigValue
ऑब्जेक्ट कोConfiguration
ऑब्जेक्ट में डालें.
Repository
इंटरफ़ेस को लागू करना
Repository
ऑब्जेक्ट का एकमात्र मकसद ट्रैवर्सल करना और
डेटा स्टोर करने की जगह के आइटम को इंडेक्स करना. टेंप्लेट का इस्तेमाल करते समय, आपको सिर्फ़ इस बदलाव की ज़रूरत होगी
कॉन्टेंट कनेक्टर बनाने के लिए Repository
इंटरफ़ेस में कुछ खास तरीकों का इस्तेमाल करें.
आप जिन तरीकों को ओवरराइड करते हैं वे आपकी इस्तेमाल की जाने वाली टेंप्लेट और ट्रैवर्सल रणनीति पर निर्भर करते हैं.
ListingConnector
इन तरीकों को बदलें:
कॉन्टेंट बनाने
init()
तरीका. डेटा रिपॉज़िटरी (डेटा स्टोर की जगह) को सेट-अप करने और शुरू करने के लिए,init()
तरीका.getIds()
तरीका. डेटा स्टोर करने की जगह में सभी रिकॉर्ड के लिए, आईडी और हैश वैल्यू पाने के लिए,getIds()
तरीके को बदलें.getDoc()
तरीका. इंडेक्स से नया आइटम जोड़ने, अपडेट करने, उसमें बदलाव करने या उसे मिटाने के लिए,getDoc()
तरीका.(ज़रूरी नहीं)
getChanges()
तरीका. अगर आपकी रिपॉज़िटरी में बदलाव का पता लगाने की सुविधा काम करती है, तोgetChanges()
तरीका. शेड्यूल की गई हर बढ़ोतरी के लिए, इस तरीके को एक बार कॉल किया जाता है ट्रैवर्सल (जैसा कि आपके कॉन्फ़िगरेशन में बताया गया है) और बदलाव किए गए आइटम वापस पाने के लिए उन्हें इंडेक्स न करें.(ज़रूरी नहीं)
close()
तरीका. अगर आपको रिपॉज़िटरी (डेटा स्टोर की जगह) में क्लीनअप करना है, तोclose()
को बदलें तरीका. कनेक्टर के बंद होने के दौरान, इस तरीके को एक बार कॉल किया जाता है.
Repository
ऑब्जेक्ट का हर तरीका कुछ ऐसा दिखाता है
ApiOperation
ऑब्जेक्ट है. ApiOperation
ऑब्जेक्ट, सिंगल या
शायद एक से ज़्यादा, IndexingService.indexItem()
कॉल करता है.
कस्टम कॉन्फ़िगरेशन पैरामीटर पाएं
अपने कनेक्टर के कॉन्फ़िगरेशन को मैनेज करने के लिए, आपको
कस्टम पैरामीटर
Configuration
ऑब्जेक्ट है. यह टास्क आम तौर पर इसमें किया जाता है
Repository
क्लास का
init()
तरीका.
Configuration
क्लास में अलग-अलग तरह का डेटा पाने के कई तरीके हैं
. हर तरीका, ConfigValue
ऑब्जेक्ट दिखाता है. इसके बाद, आपको
ConfigValue
ऑब्जेक्ट का इस्तेमाल करें
get()
पाने का तरीका बताया गया है.
यहां दिया गया स्निपेट:
FullTraversalSample
को वापस लाने का तरीका दिखाता है
Configuration
ऑब्जेक्ट से मिला, कस्टम पूर्णांक की वैल्यू:
कई वैल्यू वाला पैरामीटर पाने और पार्स करने के लिए, इनमें से किसी एक वैल्यू का इस्तेमाल करें
डेटा को अलग-अलग हिस्सों में पार्स करने के लिए, Configuration
क्लास के टाइप पार्सर.
ट्यूटोरियल कनेक्टर में नीचे दिया गया स्निपेट
getMultiValue
GitHub रिपॉज़िटरी के नामों की सूची पाने का तरीका:
लिस्ट ट्रैवर्सल परफ़ॉर्म करना
सेटिंग में एडमिन के किए गए बदलाव
getIds()
का इस्तेमाल करें.
getIds()
तरीके में चेकपॉइंट स्वीकार किया जाता है. फिर से शुरू करने के लिए, चेकपॉइंट का इस्तेमाल किया गया है
किसी खास आइटम को इंडेक्स करने की प्रोसेस में रुकावट आनी चाहिए.
इसके बाद,
getDoc()
का इस्तेमाल करें.
आइटम आईडी और हैश वैल्यू पुश करें
सेटिंग में एडमिन के किए गए बदलाव
getIds()
आइटम आईडी और उनसे जुड़े कॉन्टेंट की हैश वैल्यू को
डेटा स्टोर करने की जगह. इसके बाद, आईडी और हैश वैल्यू पेयर को पुश ऑपरेशन में पैकेज कर दिया जाता है
Cloud Search इंडेक्स करने वाली सूची के लिए अनुरोध करें. आम तौर पर, रूट या पैरंट आईडी
पहले चाइल्ड आईडी के बाद पुश किया जाता है. ऐसा तब तक होता है, जब तक आइटम की पूरी हैरारकी
प्रोसेस किया गया.
getIds()
तरीका, ऐसे चेकपॉइंट को स्वीकार करता है जो आखिरी आइटम के लिए बनाया गया है
इंडेक्स किया गया. चेकपॉइंट का इस्तेमाल करके, किसी खास सामान को इंडेक्स करने की प्रोसेस फिर से शुरू की जा सकती है
तो इस प्रक्रिया में रुकावट न आए. डेटा स्टोर करने की जगह में मौजूद हर आइटम के लिए, ये काम करें
getIds()
तरीके में दिए गए चरण:
- रिपॉज़िटरी से हर आइटम आईडी और उससे जुड़ी हैश वैल्यू पाएं.
- हर आईडी और हैश वैल्यू के जोड़े को
PushItems
में पैकेज करें. - हर
PushItems
को इटरेटर में जोड़ें. इसके बाद, इन्हेंgetIds()
तरीका. ध्यान दें किgetIds()
वास्तव मेंCheckpointCloseableIterable
इसका बार-बार इस्तेमाल किया जा सकता हैApiOperation
ऑब्जेक्ट हैं, जो एपीआई अनुरोध को दिखाने के लिए हर ऑब्जेक्ट कोRepositoryDoc
, जैसे कि आइटमों को सूची में पुश करें.
नीचे दिए गए कोड स्निपेट में, हर आइटम आईडी और हैश वैल्यू पाने का तरीका बताया गया है
उन्हें एक
PushItems
.
PushItems
, किसी आइटम को Cloud Search में पुश करने के लिए किया गया ApiOperation
का अनुरोध होता है
इंडेक्स करने की सूची.
नीचे दिया गया कोड स्निपेट
PushItems.Builder
क्लास का इस्तेमाल एक पुश में आईडी और हैश वैल्यू को पैकेज करने के लिए करता है
ApiOperation
.
आगे की प्रोसेस के लिए, आइटम को Cloud Search की इंडेक्स करने वाली सूची में भेजा जाता है.
हर आइटम को वापस पाएं और मैनेज करें
सेटिंग में एडमिन के किए गए बदलाव
getDoc()
: Cloud Search की इंडेक्स करने वाली सूची में, हर आइटम को हैंडल करने के लिए.
आइटम नया हो सकता है, उसमें बदलाव किया जा सकता है, उसमें कोई बदलाव नहीं किया जा सकता या अब सोर्स में मौजूद नहीं हो सकता
डेटा स्टोर करने की जगह. हर उस आइटम को वापस पाएं और इंडेक्स करें जिसमें बदलाव किया गया है या जो नया है. आइटम हटाएं
जो अब सोर्स रिपॉज़िटरी में मौजूद नहीं है.
getDoc()
वाला तरीका, Google Cloud Search से आइटम स्वीकार करता है
इंडेक्स करने की सूची. सूची में मौजूद हर आइटम के लिए, यह तरीका अपनाएं
getDoc()
तरीका:
देखें कि Cloud Search इंडेक्स करने वाली सूची में, आइटम का आईडी मौजूद है या नहीं रिपॉज़िटरी में. अगर नहीं, तो आइटम को इंडेक्स से मिटा दें.
आइटम की स्थिति के लिए इंडेक्स पोल करें. अगर आइटम में कोई बदलाव नहीं हुआ है (
ACCEPTED
), तो यह न करें कुछ भी करें.इंडेक्स में बदलाव किए गए या नए आइटम:
- अनुमतियां सेट करें.
- उस आइटम के लिए मेटाडेटा सेट करें जिसे इंडेक्स किया जा रहा है.
- मेटाडेटा और आइटम को मिलाकर एक इंडेक्स करने की सुविधा बनाएं
RepositoryDoc
. RepositoryDoc
वापस करें.
ध्यान दें: ListingConnector
टेंप्लेट, null
को वापस लौटाने की सुविधा नहीं देता
getDoc()
तरीका. null
फ़ंक्शन को NullPointerException.
में नतीजे मिलते हैं
मिटाए गए आइटम मैनेज करना
नीचे दिया गया कोड स्निपेट यह पता लगाने का तरीका बताता है कि कोई आइटम डेटा स्टोर करने की जगह को पूरा करें और अगर नहीं है, तो उसे मिटा दें.
ध्यान दें कि documents
, रिपॉज़िटरी को दिखाने वाला डेटा स्ट्रक्चर है. अगर आपने
documents
में documentID
नहीं मिले, वापस जाएं
APIOperations.deleteItem(resourceName)
का इस्तेमाल करें.
जिन आइटम में कोई बदलाव नहीं किया गया है उन्हें हैंडल करना
नीचे दिया गया कोड स्निपेट, Cloud Search में आइटम की स्थिति की समीक्षा करने का तरीका बताता है सूची को इंडेक्स करना और ऐसे आइटम को हैंडल करना जिसमें बदलाव नहीं किया गया है.
यह पता लगाने के लिए कि आइटम में बदलाव किया गया है या नहीं, आइटम की स्थिति भी देखें . उदाहरण में, हैश का इस्तेमाल यह तय करने के लिए किया जाता है कि आइटम बदला गया है या नहीं.
किसी आइटम के लिए अनुमतियां सेट करना
उपयोगकर्ताओं की पहचान करने के लिए, आपका रिपॉज़िटरी (डेटा स्टोर करने की जगह) ऐक्सेस कंट्रोल लिस्ट (ACL) का इस्तेमाल करता है या वे ग्रुप जिनके पास किसी आइटम का ऐक्सेस है. एसीएल, ग्रुप या उपयोगकर्ताओं के लिए आईडी की सूची होती है जो आइटम को ऐक्सेस कर सकते हैं.
आपको डेटा स्टोर करने की जगह में इस्तेमाल किए जाने वाले ACL का डुप्लीकेट बनाना होगा, ताकि यह पक्का किया जा सके कि सिर्फ़ वे उपयोगकर्ता ही इस्तेमाल किए जा रहे हैं अगर आपके पास किसी आइटम का ऐक्सेस है, तो वह खोज के नतीजे में उस आइटम को देख सकता है. कॉन्टेंट बनाने किसी आइटम को इंडेक्स करते समय उसके लिए ACL को शामिल करना ज़रूरी है, ताकि Google Cloud Search के पास सही लेवल का ऐक्सेस देने के लिए ज़रूरी जानकारी हो आइटम.
Content Connector SDK टूल की मदद से, एसीएल क्लास और तरीकों का एक बेहतर सेट उपलब्ध कराया जाता है ज़्यादातर डेटा स्टोर करने की जगहों के ACL का मॉडल बनाते हैं. आपको इसमें हर आइटम के लिए ACL का विश्लेषण करना होगा और Google Cloud Search के लिए संबंधित ACL बनाएं. आइटम को इंडेक्स करें. अगर डेटा स्टोर करने की जगह का ACL, ACL जैसे सिद्धांतों का इस्तेमाल करता है हो सकता है कि ACL पेचीदा हो जाए. Google पर ज़्यादा जानकारी पाने के लिए, Cloud Search ACL, इसे देखें Google Cloud Search ACL.
ध्यान दें: Cloud Search इंडेक्स करने वाला एपीआई, सिंगल-डोमेन ACL काम करता है. इस पर काम नहीं होता
का इस्तेमाल करने के लिए किया जा सकता है. इसका इस्तेमाल करें
Acl.Builder
क्लास का इस्तेमाल करें. यहां दिया गया कोड स्निपेट,
पूरे ट्रैवर्सल सैंपल से, इसकी अनुमति देता है
सभी उपयोगकर्ता या “प्रिंसिपल”
(getCustomerPrincipal()
)
सभी आइटम के “पाठक” होने के लिए
(.setReaders()
)
ध्यान दें.
डेटा स्टोर करने की जगह के लिए ACL को ठीक से मॉडल करने के लिए आपको ACL को समझना होगा. इसके लिए उदाहरण के लिए, हो सकता है कि आप किसी फ़ाइल सिस्टम में मौजूद फ़ाइलों को इंडेक्स कर रहे हों किसी तरह के इनहेरिटेंस मॉडल का इस्तेमाल करता है, जिसमें चाइल्ड फ़ोल्डर अनुमतियां इनहेरिट करता है . मॉडलिंग ACL इनहेरिटेंस के लिए अतिरिक्त जानकारी की आवश्यकता होती है इसमें शामिल किया गया Google Cloud Search एसीएल
किसी आइटम के लिए मेटाडेटा सेट करना
मेटाडेटा को Item
ऑब्जेक्ट में सेव किया जाता है. Item
बनाने के लिए, आपको इसकी ज़रूरत होगी
कम से कम यूनीक स्ट्रिंग आईडी, आइटम टाइप, एसीएल, यूआरएल, और आइटम का वर्शन होना चाहिए.
नीचे दिया गया कोड स्निपेट यह दिखाता है किItem
IndexingItemBuilder
हेल्पर क्लास
इंडेक्स किया जा सकने वाला आइटम बनाना
आइटम के लिए मेटाडेटा सेट करने के बाद, आप वास्तविक इंडेक्स करने योग्य बना सकते हैं
आइटम को
RepositoryDoc.Builder
.
नीचे दिए गए उदाहरण में, इंडेक्स किया जा सकने वाला एक आइटम बनाने का तरीका बताया गया है.
RepositoryDoc
एक तरह का है
ApiOperation
IndexingService.indexItem()
अनुरोध.
Google आपके यूआरएल पैरामीटर को कैसे इस्तेमाल करेगा, यह तय करने के लिए
setRequestMode()
तरीका
RepositoryDoc.Builder
क्लास का इस्तेमाल करें, ताकि इंडेक्स करने के अनुरोध की पहचान ASYNCHRONOUS
या SYNCHRONOUS
के तौर पर की जा सके:
ASYNCHRONOUS
- एसिंक्रोनस मोड का इस्तेमाल करने पर, पेज को इंडेक्स करने में ज़्यादा समय लगता है और यह इंडेक्स करने के अनुरोधों के लिए, बड़े पैमाने पर डेटा इकट्ठा करने की सुविधा देता है. एसिंक्रोनस मोड है इसका सुझाव, पूरे डेटा स्टोर करने की जगह के शुरुआती इंडेक्स (बैकफ़िल) के लिए दिया जाता है.
SYNCHRONOUS
- सिंक्रोनस मोड से, इंडेक्स करने के दौरान विज्ञापन दिखने में कम समय लगता है और
सीमित थ्रूपुट कोटा को पूरा करता है. सिंक्रोनस मोड है
अपडेट को इंडेक्स करने और रिपॉज़िटरी में बदलावों का सुझाव दिया जाता है. अगर आपने
कोई जानकारी नहीं है, तो अनुरोध मोड डिफ़ॉल्ट रूप से
SYNCHRONOUS
में सेट हो जाता है.
अगले चरण
यहां दिए गए कुछ तरीके आज़माएं:
- (ज़रूरी नहीं)
close()
को लागू करना को बंद करने से पहले किसी भी संसाधन को रिलीज़ करने का तरीका बताएंगे. - (ज़रूरी नहीं) पहचान कनेक्टर बनाएं Content Connector SDK टूल का इस्तेमाल करके.
टेंप्लेट क्लास का इस्तेमाल करके ग्राफ़ ट्रैवर्सल कनेक्टर बनाना
Cloud Search इंडेक्स करने वाली सूची का इस्तेमाल, आईडी और हैश वैल्यू को होल्ड करने के लिए किया जाता है डेटा स्टोर करने की जगह के हर आइटम के लिए. ग्राफ़ ट्रैवर्सल कनेक्टर, आइटम आईडी को यहां भेजता है Google Cloud Search इंडेक्स करने वाली सूची से, उन्हें एक-एक करके इंडेक्स करना. Google Cloud Search, सूची बनाए रखता है और सूची के कॉन्टेंट की तुलना आइटम की स्थिति तय करता है, जैसे किसी आइटम को डेटा स्टोर करने की जगह. Cloud Search इंडेक्स करने की सूची के बारे में ज़्यादा जानकारी के लिए, इसे देखें से Google Cloud Search इंडेक्स करने की सूची.
इंडेक्स के दौरान, आइटम का कॉन्टेंट, डेटा स्टोर करने की जगह और किसी भी चाइल्ड आइटम आईडी सूची में पुश किए जाते हैं. कनेक्टर बार-बार आगे बढ़ता है पैरंट और चाइल्ड आईडी तब तक प्रोसेस करते रहेंगे, जब तक सभी आइटम मैनेज नहीं हो जाते.
दस्तावेज़ों का यह अनुभाग GraphTraversalSample उदाहरण के लिए.
कनेक्टर का एंट्री पॉइंट लागू करें
कनेक्टर का एंट्री पॉइंट
main()
तरीका. इस तरीके का मुख्य टास्क,
Application
क्लास और इसके शुरू
start()
का तरीका बताया गया है.
कॉल करने से पहले
application.start()
का इस्तेमाल करें
IndexingApplication.Builder
क्लास को इंस्टैंशिएट करने के लिए ListingConnector
टेंप्लेट का इस्तेमाल करें. कॉन्टेंट बनाने
ListingConnector
स्वीकार करता है
Repository
ऑब्जेक्ट है, जिसकी विधियों को आपने लागू किया है.
नीचे दिए गए स्निपेट में,
ListingConnector
और उससे जुड़े Repository
को इंस्टैंशिएट करें:
पर्दे के पीछे, SDK टूल
initConfig()
आपके कनेक्टर के main()
तरीके से किए गए कॉल के बाद
Application.build
.
initConfig()
तरीका:
-
Configuation.isInitialized()
कैसे पक्का किया जा सकता है किConfiguration
शुरू नहीं किया गया है. - Google से दिए गए मुख्य-वैल्यू के साथ
Configuration
ऑब्जेक्ट को शुरू करता है पेयर. हर की-वैल्यू पेयर,ConfigValue
ऑब्जेक्ट कोConfiguration
ऑब्जेक्ट में डालें.
Repository
इंटरफ़ेस को लागू करना
इसका मुख्य मकसद
Repository
ऑब्जेक्ट, डेटा स्टोर करने की जगह का ट्रैवर्सल और इंडेक्स करने के लिए है
आइटम. किसी टेंप्लेट का इस्तेमाल करते समय, आपको
कॉन्टेंट कनेक्टर बनाने के लिए Repository
इंटरफ़ेस. आपने जिन तरीकों को बदला है
आपके इस्तेमाल किए जाने वाले टेंप्लेट और ट्रैवर्सल रणनीति पर निर्भर करता है.
ListingConnector
इन तरीकों का इस्तेमाल किया जाता है:
कॉन्टेंट बनाने
init()
तरीका. डेटा रिपॉज़िटरी (डेटा स्टोर की जगह) को सेट-अप करने और शुरू करने के लिए,init()
तरीका.getIds()
तरीका. डेटा स्टोर करने की जगह में सभी रिकॉर्ड के लिए, आईडी और हैश वैल्यू पाने के लिए,getIds()
तरीके को बदलें.getDoc()
तरीका. इंडेक्स से नया आइटम जोड़ने, अपडेट करने, उसमें बदलाव करने या उसे मिटाने के लिए,getDoc()
तरीका.(ज़रूरी नहीं)
getChanges()
तरीका. अगर आपकी रिपॉज़िटरी में बदलाव का पता लगाने की सुविधा काम करती है, तोgetChanges()
तरीका. शेड्यूल की गई हर बढ़ोतरी के लिए, इस तरीके को एक बार कॉल किया जाता है ट्रैवर्सल (जैसा कि आपके कॉन्फ़िगरेशन में बताया गया है) और बदलाव किए गए आइटम वापस पाने के लिए उन्हें इंडेक्स न करें.(ज़रूरी नहीं)
close()
तरीका. अगर आपको रिपॉज़िटरी (डेटा स्टोर की जगह) में क्लीनअप करना है, तोclose()
को बदलें तरीका. कनेक्टर के बंद होने के दौरान, इस तरीके को एक बार कॉल किया जाता है.
हर तरीके के लिए
Repository
ऑब्जेक्ट किसी तरह का ApiOperation
ऑब्जेक्ट दिखाता है. ApiOperation
ऑब्जेक्ट किसी एक या कई,
IndexingService.indexItem()
कॉल करता है.
कस्टम कॉन्फ़िगरेशन पैरामीटर पाएं
अपने कनेक्टर के कॉन्फ़िगरेशन को मैनेज करने के लिए, आपको
कस्टम पैरामीटर
Configuration
ऑब्जेक्ट है. यह टास्क आम तौर पर इसमें किया जाता है
Repository
क्लास का
init()
तरीका.
Configuration
क्लास में अलग-अलग तरह का डेटा पाने के कई तरीके हैं
. हर तरीका, ConfigValue
ऑब्जेक्ट दिखाता है. इसके बाद, आपको
ConfigValue
ऑब्जेक्ट का इस्तेमाल करें
get()
पाने का तरीका बताया गया है.
यहां दिया गया स्निपेट:
FullTraversalSample
को वापस लाने का तरीका दिखाता है
Configuration
ऑब्जेक्ट से मिला, कस्टम पूर्णांक की वैल्यू:
कई वैल्यू वाला पैरामीटर पाने और पार्स करने के लिए, इनमें से किसी एक वैल्यू का इस्तेमाल करें
डेटा को अलग-अलग हिस्सों में पार्स करने के लिए, Configuration
क्लास के टाइप पार्सर.
ट्यूटोरियल कनेक्टर में नीचे दिया गया स्निपेट
getMultiValue
GitHub रिपॉज़िटरी के नामों की सूची पाने का तरीका:
ग्राफ़ ट्रैवर्सल चलाएं
सेटिंग में एडमिन के किए गए बदलाव
getIds()
का इस्तेमाल करें.
getIds()
तरीके में चेकपॉइंट स्वीकार किया जाता है. फिर से शुरू करने के लिए, चेकपॉइंट का इस्तेमाल किया गया है
किसी खास आइटम को इंडेक्स करने की प्रोसेस में रुकावट आनी चाहिए.
इसके बाद,
getDoc()
का इस्तेमाल करें.
आइटम आईडी और हैश वैल्यू पुश करें
सेटिंग में एडमिन के किए गए बदलाव
getIds()
आइटम आईडी और उनसे जुड़े कॉन्टेंट की हैश वैल्यू को
डेटा स्टोर करने की जगह. इसके बाद, आईडी और हैश वैल्यू पेयर को पुश ऑपरेशन में पैकेज कर दिया जाता है
Cloud Search इंडेक्स करने वाली सूची के लिए अनुरोध करें. आम तौर पर, रूट या पैरंट आईडी
पहले चाइल्ड आईडी के बाद पुश किया जाता है. ऐसा तब तक होता है, जब तक आइटम की पूरी हैरारकी
प्रोसेस किया गया.
getIds()
तरीका, ऐसे चेकपॉइंट को स्वीकार करता है जो आखिरी आइटम के लिए बनाया गया है
इंडेक्स किया गया. चेकपॉइंट का इस्तेमाल करके, किसी खास सामान को इंडेक्स करने की प्रोसेस फिर से शुरू की जा सकती है
तो इस प्रक्रिया में रुकावट न आए. डेटा स्टोर करने की जगह में मौजूद हर आइटम के लिए, ये काम करें
getIds()
तरीके में दिए गए चरण:
- रिपॉज़िटरी से हर आइटम आईडी और उससे जुड़ी हैश वैल्यू पाएं.
- हर आईडी और हैश वैल्यू के जोड़े को
PushItems
में पैकेज करें. - हर
PushItems
को इटरेटर में जोड़ें. इसके बाद, इन्हेंgetIds()
तरीका. ध्यान दें किgetIds()
वास्तव मेंCheckpointCloseableIterable
इसका बार-बार इस्तेमाल किया जा सकता हैApiOperation
ऑब्जेक्ट हैं, जो एपीआई अनुरोध को दिखाने के लिए हर ऑब्जेक्ट कोRepositoryDoc
, जैसे कि आइटमों को सूची में पुश करें.
नीचे दिए गए कोड स्निपेट में, हर आइटम आईडी और हैश वैल्यू पाने का तरीका बताया गया है
उन्हें एक
PushItems
. PushItems
ApiOperation
किसी आइटम को Cloud Search इंडेक्स करने वाली सूची में पुश करने का अनुरोध करता है.
नीचे दिया गया कोड स्निपेट
PushItems.Builder
क्लास का इस्तेमाल एक पुश में आईडी और हैश वैल्यू को पैकेज करने के लिए करता है
ApiOperation
.
आगे की प्रोसेस के लिए, आइटम को Cloud Search की इंडेक्स करने वाली सूची में भेजा जाता है.
हर आइटम को वापस पाएं और मैनेज करें
सेटिंग में एडमिन के किए गए बदलाव
getDoc()
: Cloud Search की इंडेक्स करने वाली सूची में, हर आइटम को हैंडल करने के लिए.
आइटम नया हो सकता है, उसमें बदलाव किया जा सकता है, उसमें कोई बदलाव नहीं किया जा सकता या अब सोर्स में मौजूद नहीं हो सकता
डेटा स्टोर करने की जगह. हर उस आइटम को वापस पाएं और इंडेक्स करें जिसमें बदलाव किया गया है या जो नया है. आइटम हटाएं
जो अब सोर्स रिपॉज़िटरी में मौजूद नहीं है.
getDoc()
वाला तरीका, Cloud Search इंडेक्स से आइटम स्वीकार करता है
सूची. सूची में मौजूद हर आइटम के लिए, यह तरीका अपनाएं
getDoc()
तरीका:
देखें कि Cloud Search इंडेक्स करने वाली सूची में, आइटम का आईडी डेटा स्टोर करने की जगह. अगर नहीं, तो आइटम को इंडेक्स से मिटा दें. अगर आइटम मौजूद है, तो अगले चरण पर जाएं.
इंडेक्स में बदलाव किए गए या नए आइटम:
- अनुमतियां सेट करें.
- उस आइटम के लिए मेटाडेटा सेट करें जिसे इंडेक्स किया जा रहा है.
- मेटाडेटा और आइटम को मिलाकर एक इंडेक्स करने की सुविधा बनाएं
RepositoryDoc
. - आगे की प्रक्रिया के लिए, चाइल्ड आईडी को Cloud Search की इंडेक्स करने वाली सूची में रखें.
RepositoryDoc
वापस करें.
मिटाए गए आइटम मैनेज करना
नीचे दिया गया कोड स्निपेट यह पता लगाने का तरीका बताता है कि कोई आइटम इंडेक्स में मौजूद है या नहीं और, नहीं, बल्कि इसे मिटाएं.
किसी आइटम के लिए अनुमतियां सेट करना
उपयोगकर्ताओं की पहचान करने के लिए, आपका रिपॉज़िटरी (डेटा स्टोर करने की जगह) ऐक्सेस कंट्रोल लिस्ट (ACL) का इस्तेमाल करता है या वे ग्रुप जिनके पास किसी आइटम का ऐक्सेस है. एसीएल, ग्रुप या उपयोगकर्ताओं के लिए आईडी की सूची होती है जो आइटम को ऐक्सेस कर सकते हैं.
आपको डेटा स्टोर करने की जगह में इस्तेमाल किए जाने वाले ACL का डुप्लीकेट बनाना होगा, ताकि यह पक्का किया जा सके कि सिर्फ़ वे उपयोगकर्ता ही इस्तेमाल किए जा रहे हैं अगर आपके पास किसी आइटम का ऐक्सेस है, तो वह खोज के नतीजे में उस आइटम को देख सकता है. कॉन्टेंट बनाने किसी आइटम को इंडेक्स करते समय उसके लिए ACL को शामिल करना ज़रूरी है, ताकि Google Cloud Search के पास सही लेवल का ऐक्सेस देने के लिए ज़रूरी जानकारी हो आइटम.
Content Connector SDK टूल की मदद से, एसीएल क्लास और तरीकों का एक बेहतर सेट उपलब्ध कराया जाता है ज़्यादातर डेटा स्टोर करने की जगहों के ACL का मॉडल बनाते हैं. आपको इसमें हर आइटम के लिए ACL का विश्लेषण करना होगा और Google Cloud Search के लिए संबंधित ACL बनाएं. आइटम को इंडेक्स करें. अगर डेटा स्टोर करने की जगह का ACL, ACL जैसे सिद्धांतों का इस्तेमाल करता है हो सकता है कि ACL पेचीदा हो जाए. Google पर ज़्यादा जानकारी पाने के लिए, Cloud Search ACL, इसे देखें Google Cloud Search ACL.
ध्यान दें: Cloud Search इंडेक्स करने वाला एपीआई, सिंगल-डोमेन ACL काम करता है. इस पर काम नहीं होता
का इस्तेमाल करने के लिए किया जा सकता है. इसका इस्तेमाल करें
Acl.Builder
क्लास का इस्तेमाल करें. यहां दिया गया कोड स्निपेट,
पूरे ट्रैवर्सल सैंपल से, इसकी अनुमति देता है
सभी उपयोगकर्ता या “प्रिंसिपल”
(getCustomerPrincipal()
)
सभी आइटम के “पाठक” होने के लिए
(.setReaders()
)
ध्यान दें.
डेटा स्टोर करने की जगह के लिए ACL को ठीक से मॉडल करने के लिए आपको ACL को समझना होगा. इसके लिए उदाहरण के लिए, हो सकता है कि आप किसी फ़ाइल सिस्टम में मौजूद फ़ाइलों को इंडेक्स कर रहे हों किसी तरह के इनहेरिटेंस मॉडल का इस्तेमाल करता है, जिसमें चाइल्ड फ़ोल्डर अनुमतियां इनहेरिट करता है . मॉडलिंग ACL इनहेरिटेंस के लिए अतिरिक्त जानकारी की आवश्यकता होती है इसमें शामिल किया गया Google Cloud Search एसीएल
किसी आइटम के लिए मेटाडेटा सेट करना
मेटाडेटा को Item
ऑब्जेक्ट में सेव किया जाता है. Item
बनाने के लिए, आपको इसकी ज़रूरत होगी
कम से कम यूनीक स्ट्रिंग आईडी, आइटम टाइप, एसीएल, यूआरएल, और आइटम का वर्शन होना चाहिए.
नीचे दिया गया कोड स्निपेट यह दिखाता है किItem
IndexingItemBuilder
हेल्पर क्लास
इंडेक्स किया जा सकने वाला आइटम बनाना
आइटम के लिए मेटाडेटा सेट करने के बाद, आप वास्तविक इंडेक्स करने योग्य बना सकते हैं
आइटम को
RepositoryDoc.Builder
.
नीचे दिए गए उदाहरण में, इंडेक्स किया जा सकने वाला एक आइटम बनाने का तरीका बताया गया है.
RepositoryDoc
एक तरह का ApiOperation
है, जो
IndexingService.indexItem()
अनुरोध.
Google आपके यूआरएल पैरामीटर को कैसे इस्तेमाल करेगा, यह तय करने के लिए
setRequestMode()
तरीका
RepositoryDoc.Builder
क्लास का इस्तेमाल करें, ताकि इंडेक्स करने के अनुरोध की पहचान ASYNCHRONOUS
या SYNCHRONOUS
के तौर पर की जा सके:
ASYNCHRONOUS
- एसिंक्रोनस मोड का इस्तेमाल करने पर, पेज को इंडेक्स करने में ज़्यादा समय लगता है और यह इंडेक्स करने के अनुरोधों के लिए, बड़े पैमाने पर डेटा इकट्ठा करने की सुविधा देता है. एसिंक्रोनस मोड है इसका सुझाव, पूरे डेटा स्टोर करने की जगह के शुरुआती इंडेक्स (बैकफ़िल) के लिए दिया जाता है.
SYNCHRONOUS
- सिंक्रोनस मोड से, इंडेक्स करने के दौरान विज्ञापन दिखने में कम समय लगता है और
सीमित थ्रूपुट कोटा को पूरा करता है. सिंक्रोनस मोड है
अपडेट को इंडेक्स करने और रिपॉज़िटरी में बदलावों का सुझाव दिया जाता है. अगर आपने
कोई जानकारी नहीं है, तो अनुरोध मोड डिफ़ॉल्ट रूप से
SYNCHRONOUS
में सेट हो जाता है.
चाइल्ड आईडी को Cloud Search इंडेक्स करने वाली सूची में डालना
नीचे दिया गया कोड स्निपेट, फ़िलहाल, पैरंट आइटम को प्रोसेस किया जा रहा है. ये आईडी पैरंट आइटम के इंडेक्स होने के बाद प्रोसेस किए जाते हैं.
अगले चरण
यहां दिए गए कुछ तरीके आज़माएं:
- (ज़रूरी नहीं)
close()
को लागू करना को बंद करने से पहले किसी भी संसाधन को रिलीज़ करने का तरीका बताएंगे. - (ज़रूरी नहीं) पहचान कनेक्टर बनाएं आइडेंटिटी कनेक्टर SDK टूल का इस्तेमाल करके.
REST API का इस्तेमाल करके कॉन्टेंट कनेक्टर बनाएं
नीचे दिए गए सेक्शन में, REST एपीआई.
अपनी ट्रैवर्सल रणनीति तय करें
कॉन्टेंट कनेक्टर का मुख्य काम, रिपॉज़िटरी और अपना डेटा इंडेक्स करता है. आपको इनके आधार पर एक ट्रैवर्सल रणनीति लागू करनी होगी: आपकी रिपॉज़िटरी में डेटा का लेआउट. नीचे तीन सामान्य ट्रैवर्सल दिए गए हैं रणनीतियां:
- पूरी ट्रैवर्सल रणनीति
एक पूरी ट्रैवर्सल रणनीति, डेटा स्टोर करने की पूरी जगह को स्कैन करती है और किसी चीज़ को ब्लाइंड करके इंडेक्स करती है हर आइटम. इस रणनीति का इस्तेमाल आम तौर पर तब किया जाता है, जब आपके पास डेटा स्टोर करने की जगह कम होती है और हर बार इंडेक्स करने पर पूरा ट्रैवर्सल करने का खर्च वहन कर सकते हैं.
यह ट्रैवर्सल रणनीति उन छोटे डेटा स्टोर करने की जगहों के लिए सही है जहां ज़्यादातर स्टैटिक, गैर-पदानुक्रमिक, डेटा. आप इस ट्रैवर्सल रणनीति का भी इस्तेमाल कर सकते हैं जब बदलाव का पता लगाना मुश्किल हो या डेटा स्टोर करने की जगह के साथ काम न करता हो.
- लिस्ट ट्रैवर्सल रणनीति
लिस्ट ट्रैवर्सल रणनीति की मदद से, डेटा स्टोर करने की पूरी जगह को स्कैन किया जाता है. इसमें, सभी चाइल्ड भी शामिल होते हैं नोड से हर आइटम की स्थिति तय की जा सकती है. इसके बाद, कनेक्टर एक सेकंड पास करें और सिर्फ़ उन आइटम को इंडेक्स करता है जो नए हैं या पिछले इंडेक्स करना. आम तौर पर, इस रणनीति का इस्तेमाल कन्वर्ज़न बढ़ाने के लिए किया जाता है मौजूदा इंडेक्स में अपडेट करता है (हर बार पूरा ट्रैवर्सल करने के बजाय इंडेक्स को अपडेट करने का समय तय करता है).
यह ट्रैवर्सल रणनीति तब काम आती है, जब बदलाव का पता लगाना मुश्किल हो या डेटा स्टोर करने की जगह के साथ काम नहीं करता, आपके पास बिना हैरारकी वाला डेटा है, और बहुत बड़े डेटा सेट पर काम करते हैं.
- ग्राफ़ ट्रैवर्सल
ग्राफ़ ट्रैवर्सल रणनीति, उस पूरे पैरंट नोड को स्कैन करती है जो तय करता है कि हर आइटम की स्थिति. इसके बाद, कनेक्टर दूसरा पास लेता है और सिर्फ़ रूट नोड में मौजूद आइटम नए हैं या उन्हें पिछली बार इंडेक्स होने के बाद अपडेट किया गया है. आखिर में, कनेक्टर कोई भी चाइल्ड आईडी पास करता है और फिर चाइल्ड नोड में आइटम इंडेक्स करता है जो नई हैं या जिन्हें अपडेट किया गया है. यह कनेक्टर इसके ज़रिए बार-बार चलता रहता है सभी चाइल्ड नोड तब तक उपलब्ध होंगे, जब तक सभी आइटम का पता नहीं चल जाता. आम तौर पर, ऐसा ट्रैवर्सल का इस्तेमाल, हैरारकी के हिसाब से स्टोर करने की ऐसी जगहों के लिए किया जाता है जहां सभी आईडी की लिस्टिंग व्यावहारिक.
यह रणनीति तब काम आती है, जब आपके पास हैरारकी के हिसाब से डेटा हो जिसे जैसे, सीरीज़ डायरेक्ट्री या वेब पेज.
अपनी ट्रैवर्सल रणनीति और इंडेक्स आइटम लागू करें
Cloud Search के लिए इंडेक्स किए जा सकने वाले हर एलिमेंट को एक आइटम कहा जाता है. Cloud Search API का इस्तेमाल कर रहे हैं. आइटम कोई फ़ाइल, फ़ोल्डर, CSV फ़ाइल की कोई लाइन या एक डेटाबेस रिकॉर्ड हो सकता है.
स्कीमा रजिस्टर हो जाने के बाद, इंडेक्स में इन तरीकों का इस्तेमाल किया जा सकता है:
(ज़रूरी नहीं)
items.upload
का इस्तेमाल करना इंडेक्स करने के लिए, 100KiB से बड़ी फ़ाइलें अपलोड करें. छोटी फ़ाइलों के लिए, कॉन्टेंट को इस तरह जोड़ें inlineContent इसका उपयोग कर रहा हैitems.index
.(ज़रूरी नहीं)
media.upload
का इस्तेमाल करना मीडिया फ़ाइलों को अपलोड करके इंडेक्स किया जा सकता है.आइटम को इंडेक्स करने के लिए,
items.index
का इस्तेमाल किया जा रहा है. उदाहरण के लिए, अगर आपका स्कीमा मूवी में ऑब्जेक्ट की परिभाषा का इस्तेमाल करता है स्कीमा, किसी एक इंडेक्स आइटम ऐसा दिखेगा:{ "name": "datasource/<data_source_id>/items/titanic", "acl": { "readers": [ { "gsuitePrincipal": { "gsuiteDomain": true } } ] }, "metadata": { "title": "Titanic", "viewUrl": "http://www.imdb.com/title/tt2234155/?ref_=nv_sr_1", "objectType": "movie" }, "structuredData": { "object": { "properties": [ { "name": "movieTitle", "textValues": { "values": [ "Titanic" ] } }, { "name": "releaseDate", "dateValues": { "values": [ { "year": 1997, "month": 12, "day": 19 } ] } }, { "name": "actorName", "textValues": { "values": [ "Leonardo DiCaprio", "Kate Winslet", "Billy Zane" ] } }, { "name": "genre", "enumValues": { "values": [ "Drama", "Action" ] } }, { "name": "userRating", "integerValues": { "values": [ 8 ] } }, { "name": "mpaaRating", "textValues": { "values": [ "PG-13" ] } }, { "name": "duration", "textValues": { "values": [ "3 h 14 min" ] } } ] } }, "content": { "inlineContent": "A seventeen-year-old aristocrat falls in love with a kind but poor artist aboard the luxurious, ill-fated R.M.S. Titanic.", "contentFormat": "TEXT" }, "version": "01", "itemType": "CONTENT_ITEM" }
(ज़रूरी नहीं) items.get का इस्तेमाल करना किसी आइटम की पुष्टि करने के लिए किए गए कॉल को इंडेक्स किया जा चुका है.
पूरा ट्रैवर्सल करने के लिए, आपको समय-समय पर पूरे ट्रैफ़िक को फिर से इंडेक्स करना होगा डेटा स्टोर करने की जगह. लिस्ट या ग्राफ़ ट्रैवर्सल करने के लिए, आपको डेटा स्टोर करने की जगह में किए गए बदलावों को मैनेज करने के लिए कोड.
डेटा स्टोर करने की जगह में किए गए बदलावों को मैनेज करना
यह काम करने के लिए, रिपॉज़िटरी (डेटा स्टोर करने की जगह) से हर आइटम को समय-समय पर इकट्ठा और इंडेक्स किया जा सकता है. पूरी तरह से इंडेक्स हो जाए. यह पक्का करने में असरदार तरीके से कि आपका इंडेक्स अप-टू-डेट है या नहीं, लेकिन डेटा स्टोर करने की बड़ी या हैरारकी वाली संस्थाओं का इस्तेमाल करते समय, इंडेक्स करने पर खर्चा आ सकता है.
डेटा स्टोर करने की पूरी जगह को इंडेक्स करने के लिए, इंडेक्स कॉल का बार-बार इस्तेमाल करने के बजाय, Google Cloud इंडेक्स करने वाली सूची का भी इस्तेमाल किया जा सकता है के बदलावों को ट्रैक करने और सिर्फ़ उन आइटम को इंडेक्स करने का तरीका बताया गया है जिनमें बदल दिया गया है. Google आपके यूआरएल पैरामीटर को कैसे इस्तेमाल करेगा, यह तय करने के लिए items.push बाद में पोलिंग और अपडेट करने के लिए, आइटम को सूची में डालने के अनुरोध शामिल करें. ज़्यादा के लिए Google Cloud इंडेक्स करने की सूची के बारे में जानकारी, यहां देखें Google Cloud इंडेक्स करने की सूची.
Google Cloud Search API के बारे में ज़्यादा जानकारी के लिए, इसे देखें Cloud Search API.