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

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

वेब क्रॉल शुरू करने पर, Apache Nutch वेब को क्रॉल करता है. साथ ही, इंडेक्सर प्लग इन का इस्तेमाल करके, Google Cloud Search indexing 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 इंडेक्सर प्लग इन को डिप्लॉय करने से पहले, Google 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 के इंस्टॉल किए गए प्लग इन फ़ोल्डर (apache-nutch-1.15/plugins) में कॉपी करें.

दूसरा चरण: इंडेक्सर प्लग इन को कॉन्फ़िगर करना

Apache Nutch Indexer प्लग इन को कॉन्फ़िगर करने के लिए, plugin-configuration.properties नाम की फ़ाइल बनाएं.

कॉन्फ़िगरेशन फ़ाइल में ये पैरामीटर होने चाहिए. ये पैरामीटर, Google Cloud Search के डेटा सोर्स को ऐक्सेस करने के लिए ज़रूरी हैं.

सेटिंग पैरामीटर
डेटा सोर्स का आईडी api.sourceId = 1234567890abcdef
ज़रूरी है. Google Cloud Search का वह सोर्स आईडी जिसे Google Workspace एडमिन ने इंडेक्सर प्लग इन के लिए सेट अप किया है.
सेवा खाता api.serviceAccountPrivateKeyFile = ./PrivateKey.json
ज़रूरी है. Google Cloud Search के सेवा खाते की वह कुंजी फ़ाइल जिसे Google Workspace एडमिन ने इंडेक्सर प्लग इन को ऐक्सेस करने के लिए बनाया है.

इस उदाहरण में, ज़रूरी पैरामीटर के साथ कॉन्फ़िगरेशन फ़ाइल का सैंपल दिखाया गया है.

#
# data source access
api.sourceId=1234567890abcdef
api.serviceAccountPrivateKeyFile=./PrivateKey.json
#

कॉन्फ़िगरेशन फ़ाइल में ऐसे अन्य पैरामीटर भी हो सकते हैं जो इंडेक्सर प्लग इन के व्यवहार को कंट्रोल करते हैं. आपके पास यह कॉन्फ़िगर करने का विकल्प होता है कि प्लग इन, Cloud Search API, defaultAcl.*, और batch.* में डेटा कैसे डालता है. यह भी कॉन्फ़िगर किया जा सकता है कि इंडेक्सर प्लग इन, मेटाडेटा और स्ट्रक्चर्ड डेटा को कैसे पॉप्युलेट करता है.

इन पैरामीटर के बारे में जानने के लिए, 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

    ज़रूरी नहीं. कॉमा लगाकर अलग की गई टैग की सूची, जो उससे जुड़े डेटा सोर्स के स्कीमा में मौजूद प्रॉपर्टी से मैप होती है. मेटाटैग के लिए Apache Nutch को सेट अप करने के तरीके के बारे में ज़्यादा जानने के लिए, Nutch-parse मेटाटैग पर जाएं.

    यहां दिए गए उदाहरण में, 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> सेक्शन में ये पैरामीटर शामिल होते हैं:

    सेटिंग पैरामीटर
    Google Cloud Search की कॉन्फ़िगरेशन फ़ाइल का पाथ gcs.config.file = path

    ज़रूरी है. Google Cloud Search की कॉन्फ़िगरेशन फ़ाइल का पूरा (ऐब्सलूट) पाथ.

    अपलोड करने का फ़ॉर्मैट gcs.uploadFormat = text

    ज़रूरी नहीं. वह फ़ॉर्मैट जिसमें इंडेक्सर प्लग इन, दस्तावेज़ का कॉन्टेंट Google Cloud Search इंडेक्सर एपीआई को भेजता है. मान्य मान हैं:

    • raw: इंडेक्सर प्लगिन, दस्तावेज़ के ओरिजनल और ऐसे कॉन्टेंट को पुश करता है जिसे बदला नहीं गया है.
    • text: इंडेक्सर प्लग इन, निकाले गए टेक्स्ट कॉन्टेंट को पुश करता है. डिफ़ॉल्ट वैल्यू raw है.

चौथा चरण: वेब क्रॉल को कॉन्फ़िगर करना

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

  1. शुरू करने के लिए यूआरएल सेट अप करें.

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

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

    1. वर्किंग डायरेक्ट्री को nutch इंस्टॉलेशन डायरेक्ट्री में बदलें:

      $ cd ~/nutch/apache-nutch-X.Y/
    2. यूआरएल के लिए डायरेक्ट्री बनाएं:

      $ mkdir urls
    3. seed.txt नाम की फ़ाइल बनाएं और उसमें यूआरएल की सूची बनाएं. हर लाइन में एक यूआरएल होना चाहिए.

  2. फ़ॉलो और फ़ॉलो न करें नियम सेट अप करें.

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

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

    फ़ॉलो और न फ़ॉलो करने के यूआरएल नियम सेट अप करने के लिए:

    1. वर्किंग डायरेक्ट्री को nutch इंस्टॉलेशन डायरेक्ट्री में बदलें:

      $ cd ~/nutch/apache-nutch-X.Y/
    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
      # (commented out due to the single url-prefix allowed above)
      #+.
      
  3. क्रॉल स्क्रिप्ट में बदलाव करें.

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

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

            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 ..."
      

पांचवां चरण: वेब क्रॉल और कॉन्टेंट अपलोड करना शुरू करना

इंडेक्सर प्लग इन को इंस्टॉल और सेट अप करने के बाद, इसे लोकल मोड में अपने-आप चलाया जा सकता है. क्रॉल करने की प्रोसेस या अलग-अलग Nutch निर्देशों को लागू करने के लिए, ./bin की स्क्रिप्ट का इस्तेमाल करें.

इस उदाहरण में, यह माना गया है कि ज़रूरी कॉम्पोनेंट लोकल डायरेक्ट्री में मौजूद हैं. apache-nutch-1.15 डायरेक्ट्री से, Nutch को चलाने के लिए यह कमांड इस्तेमाल करें:

$ bin/crawl -i -s urls/ crawl-test/ 5

क्रॉल लॉग, स्टैंडर्ड आउटपुट (टर्मिनल) या logs/डायरेक्ट्री में उपलब्ध होते हैं. लॉगिंग आउटपुट को डायरेक्ट करने या ज़्यादा जानकारी वाली लॉगिंग के लिए, conf/log4j.properties में बदलाव करें.