कॉन्टेंट कनेक्टर एक सॉफ़्टवेयर प्रोग्राम है. यह एंटरप्राइज़ रिपॉज़िटरी में मौजूद डेटा को प्रोसेस करता है और डेटा सोर्स में भरता है. Google, कॉन्टेंट कनेक्टर डेवलप करने के लिए ये विकल्प उपलब्ध कराता है:
Content Connector SDK. यह Java प्रोग्रामर के लिए एक अच्छा विकल्प है. एसडीके, REST API के चारों ओर एक रैपर है. इसकी मदद से, कनेक्टर तुरंत बनाए जा सकते हैं. एसडीके का इस्तेमाल करके कॉन्टेंट कनेक्टर बनाने के लिए, Content Connector SDK का इस्तेमाल करके कॉन्टेंट कनेक्टर बनाना लेख पढ़ें.
लो-लेवल REST API या एपीआई लाइब्रेरी. अगर आपको Java का इस्तेमाल नहीं करना है या आपका कोडबेस, REST API या लाइब्रेरी के साथ बेहतर तरीके से काम करता है, तो इन विकल्पों का इस्तेमाल करें. REST API का इस्तेमाल करके कॉन्टेंट कनेक्टर बनाने के लिए, REST API का इस्तेमाल करके कॉन्टेंट कनेक्टर बनाना लेख पढ़ें.
आम तौर पर, कॉन्टेंट कनेक्टर ये काम करता है:
- यह कुकी, कॉन्फ़िगरेशन पैरामीटर को पढ़ती है और उन्हें प्रोसेस करती है.
- यह तीसरे पक्ष के डेटा संग्रह स्थान से इंडेक्स किए जा सकने वाले डेटा के अलग-अलग हिस्सों को खींचता है. इन्हें "आइटम" कहा जाता है.
- यह इंडेक्स करने लायक आइटम में, एसीएल, मेटाडेटा, और कॉन्टेंट डेटा को जोड़ता है.
- यह Cloud Search डेटा सोर्स में मौजूद आइटम को इंडेक्स करता है.
- (ज़रूरी नहीं) यह रिपॉज़िटरी में हुए बदलावों की सूचनाएं सुनता है. बदलाव की सूचनाएं, इंडेक्स करने के अनुरोधों में बदल जाती हैं, ताकि Cloud Search डेटा सोर्स को सिंक में रखा जा सके. कनेक्टर सिर्फ़ तब यह टास्क पूरा करता है, जब रिपॉज़िटरी में बदलाव का पता लगाने की सुविधा काम करती हो.
Content Connector SDK का इस्तेमाल करके, कॉन्टेंट कनेक्टर बनाना
यहां दिए गए सेक्शन में, Content Connector SDK का इस्तेमाल करके कॉन्टेंट कनेक्टर बनाने का तरीका बताया गया है.
डिपेंडेंसी सेट अप करना
इन डिपेंडेंसी को अपनी बिल्ड फ़ाइल में शामिल करें.
Maven
xml
<dependency>
<groupId>com.google.enterprise.cloudsearch</groupId>
<artifactId>google-cloudsearch-indexing-connector-sdk</artifactId>
<version>v1-0.0.3</version>
</dependency>
ग्रेडल
groovy
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 के दिए गए पैरामीटर शामिल होते हैं. आपको कॉन्फ़िगरेशन फ़ाइल में यह जानकारी देनी होगी:
- कॉन्टेंट कनेक्टर:
api.sourceIdऔरapi.serviceAccountPrivateKeyFileका एलान करें. इनसे आपकी रिपॉज़िटरी और ऐक्सेस करने के लिए ज़रूरी निजी कुंजी की पहचान होती है.
- आइडेंटिटी कनेक्टर: अपने बाहरी आइडेंटिटी सोर्स की पहचान करने के लिए,
api.identitySourceIdका एलान करें. उपयोगकर्ता को सिंक करने के लिए,api.customerId(आपके Google Workspace खाते का यूनीक आईडी) भी डालें.
Google की ओर से उपलब्ध कराए गए अन्य पैरामीटर सिर्फ़ उनकी डिफ़ॉल्ट वैल्यू बदलने के लिए इस्तेमाल करें. आईडी और कुंजियां जनरेट करने के बारे में जानकारी के लिए, Google की ओर से उपलब्ध कराए गए पैरामीटर देखें.
कॉन्फ़िगरेशन फ़ाइल में, रिपॉज़िटरी के हिसाब से पैरामीटर भी तय किए जा सकते हैं.
कॉन्फ़िगरेशन फ़ाइल को कनेक्टर को पास करना
कॉन्फ़िगरेशन फ़ाइल पास करने के लिए, config सिस्टम प्रॉपर्टी सेट करें. कनेक्टर शुरू करते समय, -D
आर्ग्युमेंट का इस्तेमाल करें. उदाहरण के लिए:
java -classpath myconnector.jar -Dconfig=MyConfig.properties MyConnector
इस आर्ग्युमेंट को शामिल न करने पर, SDK टूल लोकल डायरेक्ट्री में connector-config.properties नाम की फ़ाइल का इस्तेमाल करने की कोशिश करता है.
डेटा ट्रांसफ़र करने की रणनीति तय करना
कॉन्टेंट कनेक्टर का मुख्य काम, किसी रिपॉज़िटरी को ट्रैवर्स करना और उसके डेटा को इंडेक्स करना होता है. आपको अपनी रिपॉज़िटरी के साइज़ और लेआउट के हिसाब से रणनीति लागू करनी होगी. आपके पास अपनी रणनीति बनाने या SDK टूल से कोई रणनीति चुनने का विकल्प होता है:
- पूरे डेटा को ट्रैवर्स करने की रणनीति
- पूरी रिपॉज़िटरी को स्कैन करता है और हर आइटम को इंडेक्स करता है. यह रणनीति उन छोटी रिपॉज़िटरी के लिए सबसे सही है जहां हर इंडेक्सिंग के दौरान, पूरे ट्रैवर्सल का ओवरहेड मैनेज किया जा सकता है. इसका इस्तेमाल ऐसी छोटी रिपॉज़िटरी के लिए करें जिनमें ज़्यादातर स्टैटिक, नॉन-हायरार्किकल डेटा होता है या जब बदलाव का पता लगाना मुश्किल होता है.
- सूची को ट्रैवर्स करने की रणनीति
- यह पूरी रिपॉज़िटरी को स्कैन करके, हर आइटम का स्टेटस तय करता है. इसके बाद, सिर्फ़ नए या अपडेट किए गए आइटम को इंडेक्स करता है. इसका इस्तेमाल, बड़े और नॉन-हायरार्किकल इंडेक्स में इंक्रीमेंटल अपडेट के लिए करें. ऐसा तब करें, जब बदलाव का पता लगाने की सुविधा काम न कर रही हो.
- ग्राफ़ ट्रैवर्सल
- यह पैरंट नोड को स्कैन करके, उसके आइटम का स्टेटस पता लगाता है. इसके बाद, उस नोड में मौजूद नए या अपडेट किए गए आइटम को इंडेक्स करता है. इसके बाद, यह चाइल्ड नोड को बार-बार प्रोसेस करता है. इसका इस्तेमाल, क्रम के हिसाब से व्यवस्थित रिपॉज़िटरी के लिए करें. जैसे, डायरेक्ट्री स्ट्रक्चर या वेबसाइटें. इनमें सभी आईडी की सूची बनाना व्यावहारिक नहीं होता.
एसडीके, इन रणनीतियों को टेंप्लेट कनेक्टर क्लास में लागू करता है. इन टेंप्लेट से, डेवलपमेंट की प्रोसेस को तेज़ी से पूरा किया जा सकता है. किसी टेंप्लेट का इस्तेमाल करने के लिए, इससे जुड़ा सेक्शन देखें:
- टेंप्लेट क्लास का इस्तेमाल करके, पूरा ट्रैवर्सल करने वाला कनेक्टर बनाना
- टेंप्लेट क्लास का इस्तेमाल करके, सूची को ट्रैवर्स करने वाला कनेक्टर बनाना
- टेंप्लेट क्लास का इस्तेमाल करके, ग्राफ़ ट्रैवर्सल कनेक्टर बनाना
टेंप्लेट क्लास का इस्तेमाल करके, पूरा ट्रैवर्सल कनेक्टर बनाना
इस सेक्शन में, FullTraversalSample से लिए गए कोड के बारे में बताया गया है.
कनेक्टर एंट्री पॉइंट लागू करना
एंट्री पॉइंट, main() तरीका है. यह Application इंस्टेंस बनाता है और कनेक्टर को चलाने के लिए start() को कॉल करता है.
application.start() को कॉल करने से पहले, FullTraversalConnector टेंप्लेट को इंस्टैंशिएट करने के लिए, IndexingApplication.Builder क्लास का इस्तेमाल करें. यह टेंप्लेट, Repository ऑब्जेक्ट स्वीकार करता है.
आपका main() तरीका, Application.build() को कॉल करता है. इसके बाद, एसडीके initConfig() को कॉल करता है. initConfig() तरीका:
- यह कुकी यह पक्का करती है कि
Configurationपहले से शुरू न किया गया हो. - यह फ़ंक्शन, Google की ओर से दिए गए की-वैल्यू पेयर के साथ
Configurationऑब्जेक्ट को शुरू करता है.
Repository इंटरफ़ेस लागू करना
Repository ऑब्जेक्ट, रिपॉज़िटरी आइटम को ट्रैवर्स और इंडेक्स करता है. टेंप्लेट का इस्तेमाल करते समय, आपको Repository इंटरफ़ेस में सिर्फ़ कुछ तरीकों को बदलना होगा. FullTraversalConnector के लिए, यह एट्रिब्यूट बदलें:
init(): इसका इस्तेमाल, रिपॉज़िटरी को सेट अप करने और उसे शुरू करने के लिए किया जाता है.getAllDocs(): सभी आइटम को ट्रैवर्स और इंडेक्स करने के लिए. इसे हर शेड्यूल किए गए ट्रैवर्सल के लिए एक बार कॉल किया जाता है.- (ज़रूरी नहीं)
getChanges(): अगर आपकी रिपॉज़िटरी में बदलाव का पता लगाने की सुविधा काम करती है, तो इस सुविधा को बदलें, ताकि बदले गए आइटम को वापस पाया जा सके और उन्हें इंडेक्स किया जा सके. - (ज़रूरी नहीं)
close(): बंद होने के दौरान रिपॉज़िटरी को साफ़ करने के लिए.
हर तरीका, एक ApiOperation ऑब्जेक्ट दिखाता है. यह ऑब्जेक्ट, IndexingService.indexItem() का इस्तेमाल करके इंडेक्सिंग करता है.
कस्टम कॉन्फ़िगरेशन पैरामीटर पाना
कनेक्टर के कॉन्फ़िगरेशन को मैनेज करने के लिए, आपको Configuration ऑब्जेक्ट से कोई भी कस्टम पैरामीटर वापस पाना होगा. इस टास्क को अपनी क्लास के Repository init() तरीके से पूरा करें.
Configuration क्लास में, अलग-अलग तरह के डेटा टाइप को वापस पाने के तरीके शामिल होते हैं.
हर तरीका, एक ConfigValue ऑब्जेक्ट दिखाता है. वैल्यू पाने के लिए, ConfigValue ऑब्जेक्ट के get() तरीके का इस्तेमाल करें. FullTraversalSample के इस स्निपेट में, कस्टम पूर्णांक वैल्यू पाने का तरीका बताया गया है:
एक से ज़्यादा वैल्यू वाले पैरामीटर को वापस पाने और पार्स करने के लिए, Configuration क्लास के टाइप पार्सर में से किसी एक का इस्तेमाल करें. ट्यूटोरियल कनेक्टर के इस स्निपेट में, GitHub रिपॉज़िटरी के नामों की सूची पाने के लिए getMultiValue का इस्तेमाल किया गया है:
पूरे ट्री को ट्रैवर्स करना
पूरे ट्रैवर्सल को पूरा करने के लिए, getAllDocs() को बदलें. यह तरीका, इंडेक्सिंग के दौरान रुकावट आने पर उसे फिर से शुरू करने के लिए, चेकपॉइंट स्वीकार करता है. हर आइटम के लिए:
- अनुमतियां सेट करें.
- मेटाडेटा सेट करें.
- उन्हें एक
RepositoryDocमें जोड़ें. getAllDocs()से मिले इटरेटर में हर आइटम को पैकेज करें.
अगर आइटम सेट एक कॉल के लिए बहुत बड़ा है, तो चेकपॉइंट का इस्तेमाल करें और hasMore(true) को कॉल करें.
किसी आइटम के लिए अनुमतियां सेट करना
रिपॉज़िटरी, ऐक्सेस कंट्रोल लिस्ट (एसीएल) का इस्तेमाल करती हैं. इससे उन उपयोगकर्ताओं या ग्रुप की पहचान की जाती है जिनके पास किसी आइटम का ऐक्सेस होता है. एसीएल में, अनुमति पा चुके उपयोगकर्ताओं या ग्रुप के आईडी की सूची होती है.
यह पक्का करने के लिए कि उपयोगकर्ताओं को सिर्फ़ वे खोज नतीजे दिखें जिन्हें ऐक्सेस करने की अनुमति उनके पास है, आपको अपनी रिपॉज़िटरी के ACL को दोहराना होगा. किसी आइटम को इंडेक्स करते समय, एसीएल को शामिल करें. इससे Google Cloud Search, ऐक्सेस का सही लेवल दे पाएगा.
Content Connector SDK में, ज़्यादातर रिपॉज़िटरी के एएलसी को मॉडल करने के लिए क्लास और तरीके शामिल होते हैं. आपकी रिपॉज़िटरी की एएसएल का विश्लेषण करता है और इंडेक्सिंग के दौरान Cloud Search के लिए उनसे जुड़ी एएसएल बनाता है. कॉम्प्लेक्स एसीएल (जैसे कि इनहेरिटेंस का इस्तेमाल करने वाले एसीएल) को मॉडल करने के लिए, सावधानी से प्लानिंग करनी होती है. ज़्यादा जानकारी के लिए, Cloud Search की ऐक्सेस कंट्रोल लिस्ट (एसीएल) देखें.
ऐक्सेस सेट करने के लिए, Acl.Builder क्लास का इस्तेमाल करें. पूरे ट्रैवर्सल के इस सैंपल स्निपेट से, डोमेन के सभी उपयोगकर्ता (getCustomerPrincipal()) सभी आइटम (setReaders()) पढ़ सकते हैं:
खास तौर पर, इनहेरिटेंस मॉडल का इस्तेमाल करने वाले रिपॉज़िटरी के ऐक्सेस कंट्रोल लिस्ट (एसीएल) को सही तरीके से मॉडल करने के लिए, Cloud Search के ऐक्सेस कंट्रोल लिस्ट (एसीएल) में मौजूद जानकारी की ज़रूरत होती है.
किसी आइटम के लिए मेटाडेटा सेट करना
मेटाडेटा, Item ऑब्जेक्ट में सेव होता है. Item बनाने के लिए, आपको यूनीक आईडी, सामान की कैटगरी, एसीएल, यूआरएल, और वर्शन की ज़रूरत होती है. IndexingItemBuilder हेल्पर क्लास का इस्तेमाल करें.
इंडेक्स किया जा सकने वाला आइटम बनाना
RepositoryDoc.Builder क्लास का इस्तेमाल करें.
RepositoryDoc एक ApiOperation होता है, जो IndexingService.indexItem() अनुरोध करता है.
इंडेक्स करने के अनुरोध को ASYNCHRONOUS या SYNCHRONOUS पर सेट करने के लिए, RepositoryDoc.Builder क्लास के setRequestMode() तरीके का इस्तेमाल करें:
ASYNCHRONOUS- इस मोड में इंडेक्सिंग से लेकर नतीजे दिखाने तक में ज़्यादा समय लगता है. हालांकि, इसमें थ्रूपुट का ज़्यादा कोटा मिलता है. पूरी रिपॉज़िटरी की शुरुआती इंडेक्सिंग (बैकफ़िल) के लिए, एसिंक्रोनस मोड का इस्तेमाल करें.
SYNCHRONOUS- इस मोड में इंडेक्सिंग से लेकर नतीजे दिखाने तक का इंतज़ार का समय कम होता है. हालांकि, इसमें थ्रूपुट का कोटा कम होता है. रिपॉज़िटरी के अपडेट और बदलावों को इंडेक्स करने के लिए, सिंक्रोनस मोड का इस्तेमाल करें. अगर अनुरोध मोड के बारे में नहीं बताया गया है, तो डिफ़ॉल्ट रूप से
SYNCHRONOUSलागू हो जाता है.
इंडेक्स किए जा सकने वाले हर आइटम को इटरेटर में पैकेज करें
getAllDocs() वाला तरीका, RepositoryDoc ऑब्जेक्ट का CheckpointCloseableIterable दिखाता है. CheckpointCloseableIterableImpl.Builder क्लास का इस्तेमाल करें.
अगले चरण
- (ज़रूरी नहीं) अगर इंडेक्सिंग थ्रूपुट कम है, तो इंडेक्सिंग रेट बढ़ाना लेख पढ़ें.
- (ज़रूरी नहीं) संसाधनों को रिलीज़ करने के लिए,
close()लागू करें. - (ज़रूरी नहीं) आइडेंटिटी कनेक्टर बनाएं.
टेंप्लेट क्लास का इस्तेमाल करके, सूची ट्रैवर्सल कनेक्टर बनाना
Cloud Search की इंडेक्सिंग की कतार में, रिपॉज़िटरी आइटम के लिए आईडी और वैकल्पिक हैश होते हैं. सूची ट्रैवर्सल कनेक्टर, आईडी को इस कतार में पुश करता है और इंडेक्सिंग के लिए उन्हें वापस पाता है. Cloud Search इन कतारों को मैनेज करता है, ताकि आइटम के स्टेटस का पता लगाया जा सके. जैसे, मिटाए गए आइटम. Cloud Search इंडेक्सिंग की कतार देखें.
इस सेक्शन में, ListTraversalSample के बारे में बताया गया है.
कनेक्टर एंट्री पॉइंट लागू करना
main() तरीके से Application इंस्टेंस बनाया जाता है और start() को कॉल किया जाता है. ListingConnector टेंप्लेट को इंस्टैंशिएट करने के लिए, IndexingApplication.Builder का इस्तेमाल करें.
Repository इंटरफ़ेस लागू करना
ListingConnector के लिए, इन तरीकों को बदलें:
init(): रिपॉज़िटरी सेटअप करने के लिए.getIds(): सभी रिकॉर्ड के आईडी और हैश वापस पाने के लिए.getDoc(): इंडेक्स में आइटम जोड़ने, अपडेट करने या मिटाने के लिए.- (ज़रूरी नहीं)
getChanges(): बदलाव का पता लगाने की सुविधा का इस्तेमाल करके, इंक्रीमेंटल अपडेट के लिए. - (ज़रूरी नहीं)
close(): इसका इस्तेमाल रिपॉज़िटरी को क्लीन अप करने के लिए किया जाता है.
सूची को ट्रैवर्स करना
आईडी और हैश वापस पाने के लिए, getIds() को बदलें. Cloud Search इंडेक्सिंग की कतार में मौजूद हर आइटम को मैनेज करने के लिए, getDoc() को बदलें.
आइटम आईडी और हैश वैल्यू पुश करना
आईडी और कॉन्टेंट हैश फ़ेच करने के लिए, getIds() को बदलें. इन्हें इंडेक्सिंग क्यू में भेजने के लिए, PushItems अनुरोध के तौर पर पैकेज करें.
आईडी और हैश को पैकेज करने के लिए, PushItems.Builder का इस्तेमाल करें.
हर आइटम को वापस पाना और उसे मैनेज करना
इंडेक्सिंग की सूची में मौजूद आइटम को मैनेज करने के लिए, getDoc() को बदलें. आइटम नए हो सकते हैं, उनमें बदलाव किया जा सकता है, वे पहले जैसे हो सकते हैं या उन्हें मिटाया जा सकता है.
- देखें कि आइटम आईडी, रिपॉज़िटरी में मौजूद है या नहीं. अगर ऐसा नहीं है, तो इसे मिटा दें.
- स्टेटस के लिए इंडेक्स को पोल करें. अगर इसमें कोई बदलाव नहीं किया गया है (
ACCEPTED), तो कुछ न करें. - बदले गए या नए आइटम इंडेक्स किए गए: अनुमतियां सेट करें, मेटाडेटा सेट करें, उन्हें
RepositoryDocमें जोड़ें, और वापस भेजें.
मिटाए गए आइटम मैनेज करना
इस स्निपेट में, यह पता लगाने का तरीका बताया गया है कि कोई आइटम मौजूद है या नहीं. अगर वह मौजूद नहीं है, तो उसे मिटाने का तरीका भी बताया गया है.
बदलाव नहीं किए गए आइटम मैनेज करना
बदलाव न किए गए आइटम को मैनेज करने के लिए, इंडेक्सिंग की कतार को पोल करें.
इस उदाहरण में, बदलावों का पता लगाने के लिए हैश का इस्तेमाल किया गया है.
किसी आइटम के लिए अनुमतियां सेट करना
रिपॉज़िटरी, ऐक्सेस कंट्रोल लिस्ट (एसीएल) का इस्तेमाल करती हैं. इससे उन उपयोगकर्ताओं या ग्रुप की पहचान की जाती है जिनके पास किसी आइटम का ऐक्सेस होता है. एसीएल में, अनुमति पा चुके उपयोगकर्ताओं या ग्रुप के आईडी की सूची होती है.
यह पक्का करने के लिए कि उपयोगकर्ताओं को सिर्फ़ वे खोज नतीजे दिखें जिन्हें ऐक्सेस करने की अनुमति उनके पास है, आपको अपनी रिपॉज़िटरी के ACL को दोहराना होगा. किसी आइटम को इंडेक्स करते समय, एसीएल को शामिल करें. इससे Google Cloud Search, ऐक्सेस का सही लेवल दे पाएगा.
Content Connector SDK में, ज़्यादातर रिपॉज़िटरी के एएलसी को मॉडल करने के लिए क्लास और तरीके शामिल होते हैं. आपकी रिपॉज़िटरी की एएसएल का विश्लेषण करता है और इंडेक्सिंग के दौरान Cloud Search के लिए उनसे जुड़ी एएसएल बनाता है. कॉम्प्लेक्स एसीएल (जैसे कि इनहेरिटेंस का इस्तेमाल करने वाले एसीएल) को मॉडल करने के लिए, सावधानी से प्लानिंग करनी होती है. ज़्यादा जानकारी के लिए, Cloud Search की ऐक्सेस कंट्रोल लिस्ट (एसीएल) देखें.
ऐक्सेस सेट करने के लिए, Acl.Builder क्लास का इस्तेमाल करें. पूरे ट्रैवर्सल के इस सैंपल स्निपेट से, डोमेन के सभी उपयोगकर्ता (getCustomerPrincipal()) सभी आइटम (setReaders()) पढ़ सकते हैं:
खास तौर पर, इनहेरिटेंस मॉडल का इस्तेमाल करने वाले रिपॉज़िटरी के ऐक्सेस कंट्रोल लिस्ट (एसीएल) को सही तरीके से मॉडल करने के लिए, Cloud Search के ऐक्सेस कंट्रोल लिस्ट (एसीएल) में मौजूद जानकारी की ज़रूरत होती है.
किसी आइटम के लिए मेटाडेटा सेट करना
इंडेक्स किया जा सकने वाला आइटम बनाना
इंडेक्स करने के अनुरोध को ASYNCHRONOUS या SYNCHRONOUS पर सेट करने के लिए, RepositoryDoc.Builder क्लास के setRequestMode() तरीके का इस्तेमाल करें:
ASYNCHRONOUS- इस मोड में इंडेक्सिंग से लेकर नतीजे दिखाने तक में ज़्यादा समय लगता है. हालांकि, इसमें थ्रूपुट का ज़्यादा कोटा मिलता है. पूरी रिपॉज़िटरी की शुरुआती इंडेक्सिंग (बैकफ़िल) के लिए, एसिंक्रोनस मोड का इस्तेमाल करें.
SYNCHRONOUS- इस मोड में इंडेक्सिंग से लेकर नतीजे दिखाने तक का इंतज़ार का समय कम होता है. हालांकि, इसमें थ्रूपुट का कोटा कम होता है. रिपॉज़िटरी के अपडेट और बदलावों को इंडेक्स करने के लिए, सिंक्रोनस मोड का इस्तेमाल करें. अगर अनुरोध मोड के बारे में नहीं बताया गया है, तो डिफ़ॉल्ट रूप से
SYNCHRONOUSलागू हो जाता है.
अगले चरण
यहां कुछ ऐसे तरीके दिए गए हैं जिन्हें आज़माया जा सकता है:
- (ज़रूरी नहीं) बंद करने से पहले किसी भी संसाधन को रिलीज़ करने के लिए,
close()तरीके का इस्तेमाल करें. - (ज़रूरी नहीं) Content Connector SDK का इस्तेमाल करके, पहचान कनेक्टर बनाएं.
टेंप्लेट क्लास का इस्तेमाल करके, ग्राफ़ ट्रैवर्सल कनेक्टर बनाना
Cloud Search की इंडेक्सिंग क्यू में, रिपॉज़िटरी में मौजूद हर आइटम के लिए आईडी और हैश वैल्यू (वैकल्पिक) सेव होती हैं. ग्राफ़ ट्रैवर्सल कनेक्टर, आइटम आईडी को Google Cloud Search की इंडेक्सिंग कतार में भेजता है. साथ ही, इंडेक्स करने के लिए उन्हें एक-एक करके वापस लाता है. Google Cloud Search, कतारों को मैनेज करता है. साथ ही, कतारों में मौजूद कॉन्टेंट की तुलना करता है, ताकि आइटम की स्थिति का पता लगाया जा सके. जैसे, किसी आइटम को रिपॉज़िटरी से मिटाया गया है या नहीं. Cloud Search की इंडेक्सिंग कतार के बारे में ज़्यादा जानने के लिए, Google Cloud Search की इंडेक्सिंग कतार लेख पढ़ें.
इंडेक्सिंग के दौरान, डेटा रिपॉज़िटरी से आइटम का कॉन्टेंट फ़ेच किया जाता है. साथ ही, किसी भी चाइल्ड आइटम के आईडी को क्यू में पुश किया जाता है. कनेक्टर, पैरंट और चाइल्ड आईडी को तब तक प्रोसेस करता है, जब तक सभी आइटम हैंडल नहीं हो जाते.
कनेक्टर के एंट्री पॉइंट को लागू करना
कनेक्टर का एंट्री पॉइंट, main() तरीका है. यह तरीका, Application क्लास का एक इंस्टेंस बनाता है और कनेक्टर को चलाने के लिए, इसके start() मेथड को कॉल करता है.
application.start() को कॉल करने से पहले, ListingConnector टेंप्लेट को इंस्टैंशिएट करने के लिए, IndexingApplication.Builder क्लास का इस्तेमाल करें. ListingConnector, Repository ऑब्जेक्ट को स्वीकार करता है. आपको इसके तरीकों को लागू करना होगा.
Repository इंटरफ़ेस लागू करना
init(), getIds(), getDoc(), और getChanges() या close() को बदलें. getChanges() या close() को बदलना ज़रूरी नहीं है.
ग्राफ़ ट्रैवर्सल करना
शुरुआती आईडी पाने के लिए getIds() और आइटम मैनेज करने के लिए getDoc() को बदलें. साथ ही, चाइल्ड आईडी को कतार में भेजें.
आइटम आईडी और हैश वैल्यू पुश करना
हर आइटम को वापस पाना और उसे मैनेज करना
- देखें कि आईडी, रिपॉज़िटरी में मौजूद है या नहीं. अगर ऐसा नहीं है, तो आइटम मिटा दें.
- मौजूदा आइटम के लिए अनुमतियां और मेटाडेटा सेट करें. इसके बाद, उन्हें
RepositoryDocमें शामिल करें. - चाइल्ड आईडी को इंडेक्सिंग की सूची में पुश करें.
RepositoryDocको वापस लाएं.
मिटाए गए आइटम मैनेज करना
मेटाडेटा सेट करना और आइटम बनाना
बच्चे के आईडी को इंडेक्सिंग की सूची में रखना
REST API का इस्तेमाल करके कॉन्टेंट कनेक्टर बनाना
यहां दिए गए सेक्शन में, REST API का इस्तेमाल करके कॉन्टेंट कनेक्टर बनाने का तरीका बताया गया है.
डेटा ट्रांसफ़र करने की रणनीति तय करना
रणनीतियां (पूरी, सूची, और ग्राफ़) एसडीके के लिए कॉन्सेप्ट के तौर पर एक जैसी होती हैं. REST API का इस्तेमाल करके, चुनी गई रणनीति लागू करें.
ट्रावर्सल की रणनीति लागू करना और आइटम इंडेक्स करना
अपने स्कीमा को रजिस्टर करें. इसके बाद, इंडेक्स में जानकारी भरें. इसके लिए, यह तरीका अपनाएं:
- (ज़रूरी नहीं)
items.upload100 केआईबी से बड़ी फ़ाइलों के लिए. - (ज़रूरी नहीं)
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/", "objectType": "movie" }, "structuredData": { "object": { "properties": [ { "name": "movieTitle", "textValues": { "values": ["Titanic"] } } ] } }, "content": { "inlineContent": "A seventeen-year-old aristocrat falls in love...", "contentFormat": "TEXT" }, "version": "01", "itemType": "CONTENT_ITEM" }(ज़रूरी नहीं) इंडेक्सिंग की पुष्टि करने के लिए,
items.getका इस्तेमाल करें.
रिपॉज़िटरी में किए गए बदलावों को हैंडल करना
पूरी इंडेक्सिंग के लिए, समय-समय पर पूरी रिपॉज़िटरी को फिर से इंडेक्स करें. सूची या ग्राफ़ को ट्रैवर्स करने के लिए, Google Cloud इंडेक्सिंग की कतार का इस्तेमाल करें. इससे बदलावों को ट्रैक किया जा सकता है और सिर्फ़ उन आइटम को इंडेक्स किया जा सकता है जिनमें बदलाव हुआ है. सूची में आइटम जोड़ने के लिए, items.push का इस्तेमाल करें.