Apache Natch Indexer प्लगिन डिप्लॉय करना

अपने उपयोगकर्ताओं को वेब कॉन्टेंट उपलब्ध कराने के लिए, Google Cloud Search को सेट अप किया जा सकता है. इसके लिए, आपको ओपन सोर्स वेब क्रॉलर Apache Nutch के लिए, Cloud Search इंडेक्सर प्लगिन को डिप्लॉय करना होगा.

वेब क्रॉल शुरू करने पर, Apache Nutch वेब को क्रॉल करता है. साथ ही, इंडेक्सर प्लगिन का इस्तेमाल करके, दस्तावेज़ के कॉन्टेंट के ओरिजनल बाइनरी (या टेक्स्ट) वर्शन को Google Cloud Search API पर अपलोड करता है. Cloud Search API, कॉन्टेंट को इंडेक्स करता है और आपके उपयोगकर्ताओं को नतीजे दिखाता है.

विचार करने वाली ज़रूरी बातें

इंडेक्सर प्लगिन को डिप्लॉय करने से पहले, इन बातों का ध्यान रखें.

सिस्टम की ज़रूरतें

सिस्टम की ज़रूरतें
ऑपरेटिंग सिस्टम सिर्फ़ Linux पर:
  • Ubuntu
  • Red Hat Enterprise Linux 5.0
  • SUSE Enterprise Linux 10 (64 बिट)
सॉफ़्टवेयर
  • Apache Nutch का वर्शन 1.15. इंडेक्सर प्लगिन सॉफ़्टवेयर में Nutch का यह वर्शन शामिल है.
  • कंप्यूटर पर Java JRE 1.8 इंस्टॉल होना चाहिए. इस कंप्यूटर पर इंडेक्सर प्लगिन चलेगा
Apache Tika के दस्तावेज़ टाइप Apache Tika 1.18 के साथ काम करने वाले दस्तावेज़ फ़ॉर्मैट

इंडेक्सर प्लगिन को डिप्लॉय करना

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

ज़रूरी शर्तें

इंडेक्सर प्लगिन को डिप्लॉय करने से पहले, Cloud Search और डेटा सोर्स को कनेक्ट करने के लिए ज़रूरी जानकारी इकट्ठा करें:

पहला चरण: प्लगिन सॉफ़्टवेयर और Apache Nutch को बनाएं और इंस्टॉल करें

  1. GitHub से इंडेक्सर प्लगिन रिपॉज़िटरी का क्लोन बनाएं.

    $ git clone https://github.com/google-cloudsearch/apache-nutch-indexer-plugin.git
    $ cd apache-nutch-indexer-plugin
  2. आपको इंडेक्सर प्लगिन का जो वर्शन चाहिए उसे देखें:

    $ git checkout tags/v1-0.0.5
  3. इंडेक्सर प्लगिन बनाएं.

    $ mvn package

    प्लगिन बनाते समय टेस्ट स्किप करने के लिए, mvn package -DskipTests का इस्तेमाल करें.

  4. Apache Nutch 1.15 डाउनलोड करें और Apache Nutch को इंस्टॉल करने के निर्देशों का पालन करें.

  5. target/google-cloudsearch-apache-nutch-indexer-plugin-v1.0.0.5.zip को किसी फ़ोल्डर में एक्सट्रैक्ट करें. plugins/indexer-google-cloudsearch फ़ोल्डर को Apache Nutch plugins फ़ोल्डर (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 को कॉन्फ़िगर करना

  1. 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>
    
  2. 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 ट्यूटोरियल देखें.

  1. स्टार्ट यूआरएल सेट अप करें.

    स्टार्ट यूआरएल से यह कंट्रोल किया जाता है कि वेब क्रॉलर, आपके कॉन्टेंट को कहां से क्रॉल करना शुरू करे. क्रॉलर को लिंक फ़ॉलो करके, उस सभी कॉन्टेंट तक पहुंचने में सक्षम होना चाहिए जिसे आपको शामिल करना है.

    स्टार्ट यूआरएल सेट अप करने के लिए:

    1. Nutch की इंस्टॉलेशन डायरेक्ट्री पर जाएं:
      $ cd ~/nutch/apache-nutch-X.Y/
    2. यूआरएल के लिए डायरेक्ट्री बनाएं:
      $ mkdir urls
    3. seed.txt नाम की एक फ़ाइल बनाएं और हर लाइन में एक यूआरएल लिखें.
  2. फ़ॉलो करने और फ़ॉलो न करने के नियम सेट अप करें.

    यूआरएल के नियमों का पालन करने से यह कंट्रोल किया जा सकता है कि क्रॉलर किन यूआरएल को इंडेक्स करे. 'फ़ॉलो न करें' नियमों के तहत, यूआरएल को क्रॉल नहीं किया जाता.

    इन नियमों को सेट अप करने के लिए:

    1. Nutch की इंस्टॉलेशन डायरेक्ट्री पर जाएं.
    2. बदलाव करें conf/regex-urlfilter.txt:
      $ nano conf/regex-urlfilter.txt
    3. "+" या "-" प्रीफ़िक्स के साथ रेगुलर एक्सप्रेशन डालें:

      # 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
      #+.
      
  3. क्रॉल स्क्रिप्ट में बदलाव करें.

    अगर gcs.uploadFormat पैरामीटर मौजूद नहीं है या इसे "raw" पर सेट किया गया है, तो आपको nutch index कमांड में -addBinaryContent -base64 आर्ग्युमेंट जोड़ने होंगे. इन तर्कों से, Nutch Indexer मॉड्यूल को Base64 में बाइनरी कॉन्टेंट शामिल करने के लिए कहा जाता है.

    1. apache-nutch-1.15/bin में crawl स्क्रिप्ट खोलें.
    2. इस उदाहरण में दिखाए गए तरीके से विकल्प जोड़ें:

            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 में बदलाव करें.