अपने उपयोगकर्ताओं को वेब कॉन्टेंट उपलब्ध कराने के लिए, Google Cloud Search को सेट अप किया जा सकता है. इसके लिए, आपको ओपन सोर्स वेब क्रॉलर Apache Nutch के लिए, Cloud Search इंडेक्सर प्लगिन को डिप्लॉय करना होगा.
वेब क्रॉल शुरू करने पर, Apache Nutch वेब को क्रॉल करता है. साथ ही, इंडेक्सर प्लगिन का इस्तेमाल करके, दस्तावेज़ के कॉन्टेंट के ओरिजनल बाइनरी (या टेक्स्ट) वर्शन को Google Cloud Search API पर अपलोड करता है. Cloud Search API, कॉन्टेंट को इंडेक्स करता है और आपके उपयोगकर्ताओं को नतीजे दिखाता है.
विचार करने वाली ज़रूरी बातें
इंडेक्सर प्लगिन को डिप्लॉय करने से पहले, इन बातों का ध्यान रखें.
सिस्टम की ज़रूरतें
| सिस्टम की ज़रूरतें | |
|---|---|
| ऑपरेटिंग सिस्टम | सिर्फ़ Linux पर:
|
| सॉफ़्टवेयर |
|
| Apache Tika के दस्तावेज़ टाइप | Apache Tika 1.18 के साथ काम करने वाले दस्तावेज़ फ़ॉर्मैट |
इंडेक्सर प्लगिन को डिप्लॉय करना
इन चरणों में, इंडेक्सर प्लगिन को इंस्टॉल करने और उसके कॉम्पोनेंट को कॉन्फ़िगर करने का तरीका बताया गया है. इससे यूआरएल को क्रॉल किया जा सकता है और Cloud Search को नतीजे दिखाए जा सकते हैं.
ज़रूरी शर्तें
इंडेक्सर प्लगिन को डिप्लॉय करने से पहले, Cloud Search और डेटा सोर्स को कनेक्ट करने के लिए ज़रूरी जानकारी इकट्ठा करें:
- Google Workspace की निजी कुंजी (जिसमें सेवा खाते का आईडी होता है). निजी कुंजी पाने के बारे में जानकारी के लिए, Cloud Search API का ऐक्सेस कॉन्फ़िगर करना पर जाएं.
- Google Workspace डेटा सोर्स का आईडी. डेटा सोर्स आईडी पाने के बारे में जानकारी के लिए, खोज के लिए डेटा सोर्स जोड़ें पर जाएं.
पहला चरण: प्लगिन सॉफ़्टवेयर और Apache Nutch को बनाएं और इंस्टॉल करें
GitHub से इंडेक्सर प्लगिन रिपॉज़िटरी का क्लोन बनाएं.
$ git clone https://github.com/google-cloudsearch/apache-nutch-indexer-plugin.git $ cd apache-nutch-indexer-plugin
आपको इंडेक्सर प्लगिन का जो वर्शन चाहिए उसे देखें:
$ git checkout tags/v1-0.0.5
इंडेक्सर प्लगिन बनाएं.
$ mvn package
प्लगिन बनाते समय टेस्ट स्किप करने के लिए,
mvn package -DskipTestsका इस्तेमाल करें.Apache Nutch 1.15 डाउनलोड करें और Apache Nutch को इंस्टॉल करने के निर्देशों का पालन करें.
target/google-cloudsearch-apache-nutch-indexer-plugin-v1.0.0.5.zipको किसी फ़ोल्डर में एक्सट्रैक्ट करें.plugins/indexer-google-cloudsearchफ़ोल्डर को Apache Nutchpluginsफ़ोल्डर (apache-nutch-1.15/plugins) में कॉपी करें.
दूसरा चरण: इंडेक्सर प्लगिन को कॉन्फ़िगर करना
प्लगिन को कॉन्फ़िगर करने के लिए, plugin-configuration.properties नाम की एक फ़ाइल बनाएं.
Cloud Search डेटा सोर्स को ऐक्सेस करने के लिए, कॉन्फ़िगरेशन फ़ाइल में इन पैरामीटर के बारे में जानकारी देना ज़रूरी है.
| सेटिंग | पैरामीटर |
| डेटा सोर्स का आईडी | api.sourceId = 1234567890abcdef
ज़रूरी है. Cloud Search का वह सोर्स आईडी जिसे Google Workspace एडमिन ने इंडेक्सर प्लगिन के लिए सेट अप किया है. |
| सेवा खाता | api.serviceAccountPrivateKeyFile = ./PrivateKey.json
ज़रूरी है. Cloud Search सेवा खाते का वह कुंजी फ़ाइल जिसे Google Workspace एडमिन ने इंडेक्सर प्लगिन के ऐक्सेस के लिए बनाया है. |
यहां कॉन्फ़िगरेशन फ़ाइल का एक उदाहरण दिया गया है:
# data source access
api.sourceId=1234567890abcdef
api.serviceAccountPrivateKeyFile=./PrivateKey.json
कॉन्फ़िगरेशन फ़ाइल में ऐसे पैरामीटर भी हो सकते हैं जो प्लगिन के व्यवहार को कंट्रोल करते हैं. जैसे, प्लगिन Cloud Search API में डेटा कैसे भेजता है और यह मेटाडेटा और स्ट्रक्चर्ड डेटा को कैसे भरता है. इन पैरामीटर की जानकारी के लिए, Google के उपलब्ध कराए गए कनेक्टर पैरामीटर देखें.
तीसरा चरण: Apache Nutch को कॉन्फ़िगर करना
conf/nutch-site.xmlखोलें और ये पैरामीटर जोड़ें:सेटिंग पैरामीटर प्लगिन में शामिल हैं plugin.includes = textज़रूरी है. इस्तेमाल किए जाने वाले प्लग इन की सूची. इसमें कम से कम यह जानकारी शामिल होनी चाहिए:
- index-basic
- index-more
- indexer-google-cloudsearch
conf/nutch-default.xmlडिफ़ॉल्ट वैल्यू देता है, लेकिन आपको इसमेंindexer-google-cloudsearchको मैन्युअल तरीके से जोड़ना होगा.मेटाटैग के नाम metatags.names = textज़रूरी नहीं. कॉमा लगाकर अलग किए गए टैग की सूची. ये टैग, डेटा सोर्स के स्कीमा में मौजूद प्रॉपर्टी से मैप होते हैं. ज़्यादा जानने के लिए, Nutch-parse metatags देखें.
यहां दिए गए उदाहरण में,
nutch-site.xmlमें किए जाने वाले ज़रूरी बदलाव के बारे में बताया गया है:<property> <name>plugin.includes</name> <value>protocol-(http|httpclient)|urlfilter-regex|index-(basic|more|metadata)|query-(basic|site|url|lang)|indexer-google-cloudsearch|nutch-extensionpoints|parse-(text|html|msexcel|msword|mspowerpoint|pdf|metatags)|summary-basic|scoring-opic|urlnormalizer-(pass|regex|basic)|parse-(html|tika|metatags)|index-(basic|anchor|more|metadata)</value> </property>conf/index-writers.xmlखोलें और यह सेक्शन जोड़ें:<writer id="indexer_google_cloud_search_1" class="org.apache.nutch.indexwriter.gcs.GoogleCloudSearchIndexWriter"> <parameters> <param name="gcs.config.file" value="path/to/sdk-configuration.properties"/> </parameters> <mapping> <copy /> <rename /> <remove /> </mapping> </writer><writer>सेक्शन में ये पैरामीटर शामिल होते हैं:सेटिंग पैरामीटर Cloud Search कॉन्फ़िगरेशन फ़ाइल का पाथ gcs.config.file = pathज़रूरी है. Cloud Search कॉन्फ़िगरेशन फ़ाइल का पूरा (ऐब्सलूट) पाथ.
अपलोड फ़ॉर्मैट gcs.uploadFormat = textज़रूरी नहीं. यह वह फ़ॉर्मैट है जिसका इस्तेमाल प्लगिन, Cloud Search API को दस्तावेज़ का कॉन्टेंट भेजने के लिए करता है. मान्य मान हैं:
raw: इससे ओरिजनल कॉन्टेंट को पुश किया जाता है.text: इससे निकाले गए टेक्स्ट वाले कॉन्टेंट को पुश किया जाता है. डिफ़ॉल्ट रूप से, यहrawपर सेट होता है.
चौथा चरण: वेब क्रॉल कॉन्फ़िगर करना
वेब क्रॉल शुरू करने से पहले, इसे इस तरह कॉन्फ़िगर करें कि इसमें सिर्फ़ वह जानकारी शामिल हो जिसे आपका संगठन उपलब्ध कराना चाहता है. ज़्यादा जानकारी के लिए, Nutch ट्यूटोरियल देखें.
स्टार्ट यूआरएल सेट अप करें.
स्टार्ट यूआरएल से यह कंट्रोल किया जाता है कि वेब क्रॉलर, आपके कॉन्टेंट को कहां से क्रॉल करना शुरू करे. क्रॉलर को लिंक फ़ॉलो करके, उस सभी कॉन्टेंट तक पहुंचने में सक्षम होना चाहिए जिसे आपको शामिल करना है.
स्टार्ट यूआरएल सेट अप करने के लिए:
- Nutch की इंस्टॉलेशन डायरेक्ट्री पर जाएं:
$ cd ~/nutch/apache-nutch-X.Y/
- यूआरएल के लिए डायरेक्ट्री बनाएं:
$ mkdir urls
seed.txtनाम की एक फ़ाइल बनाएं और हर लाइन में एक यूआरएल लिखें.
- Nutch की इंस्टॉलेशन डायरेक्ट्री पर जाएं:
फ़ॉलो करने और फ़ॉलो न करने के नियम सेट अप करें.
यूआरएल के नियमों का पालन करने से यह कंट्रोल किया जा सकता है कि क्रॉलर किन यूआरएल को इंडेक्स करे. 'फ़ॉलो न करें' नियमों के तहत, यूआरएल को क्रॉल नहीं किया जाता.
इन नियमों को सेट अप करने के लिए:
- Nutch की इंस्टॉलेशन डायरेक्ट्री पर जाएं.
- बदलाव करें
conf/regex-urlfilter.txt:$ nano conf/regex-urlfilter.txt
"+" या "-" प्रीफ़िक्स के साथ रेगुलर एक्सप्रेशन डालें:
# skip file extensions -\.(gif|GIF|jpg|JPG|png|PNG|ico) # skip protocols (file: ftp: and mailto:) -^(file|ftp|mailto): # allow urls starting with https://support.google.com/gsa/ +^https://support.google.com/gsa/ # accept anything else #+.
क्रॉल स्क्रिप्ट में बदलाव करें.
अगर
gcs.uploadFormatपैरामीटर मौजूद नहीं है या इसे "raw" पर सेट किया गया है, तो आपकोnutch indexकमांड में-addBinaryContent -base64आर्ग्युमेंट जोड़ने होंगे. इन तर्कों से, Nutch Indexer मॉड्यूल को Base64 में बाइनरी कॉन्टेंट शामिल करने के लिए कहा जाता है.apache-nutch-1.15/binमेंcrawlस्क्रिप्ट खोलें.इस उदाहरण में दिखाए गए तरीके से विकल्प जोड़ें:
if $INDEXFLAG; then echo "Indexing $SEGMENT to index" __bin_nutch index $JAVA_PROPERTIES "$CRAWL_PATH"/crawldb -addBinaryContent -base64 -linkdb "$CRAWL_PATH"/linkdb "$CRAWL_PATH"/segments/$SEGMENT echo "Cleaning up index if possible" __bin_nutch clean $JAVA_PROPERTIES "$CRAWL_PATH"/crawldb else echo "Skipping indexing ..."
पांचवां चरण: वेब क्रॉल और कॉन्टेंट अपलोड करना
इंडेक्सर प्लगिन सेट अप करने के बाद, इसे लोकल मोड में चलाया जा सकता है. क्रॉलिंग का काम पूरा करने के लिए, ./bin से स्क्रिप्ट का इस्तेमाल करें.
इस उदाहरण में यह माना गया है कि कॉम्पोनेंट, लोकल डायरेक्ट्री में हैं. apache-nutch-1.15 डायरेक्ट्री से Nutch चलाएं:
$ bin/crawl -i -s urls/ crawl-test/ 5
क्रॉल लॉग, टर्मिनल या logs/ डायरेक्ट्री में उपलब्ध होते हैं. लॉगिंग आउटपुट को डायरेक्ट करने के लिए, conf/log4j.properties में बदलाव करें.