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

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

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

ज़रूरी बातें

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

सिस्टम की ज़रूरतें
ऑपरेटिंग सिस्टम सिर्फ़ Linux के लिए:
  • Ubuntu
  • रेड हैट एंटरप्राइज़ 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

    ज़रूरी है. इस्तेमाल करने के लिए प्लगिन की सूची. इसमें कम से कम यह जानकारी होनी चाहिए:

    • इंडेक्स-बेसिक
    • ज़्यादा इंडेक्स
    • google-cloudsearch
    इस प्रॉपर्टी के लिए conf/nutch-default.xml को डिफ़ॉल्ट वैल्यू के तौर पर सेट किया जाता है, लेकिन आपको इसमें मैन्युअल तरीके से indexer-google-cloudsearch भी जोड़ना होगा.
    मेटाटैग नाम metatags.names = text

    ज़रूरी नहीं. कॉमा लगाकर अलग किए गए टैग की ऐसी सूची जो इससे जुड़े डेटा सोर्स के स्कीमा में मौजूद प्रॉपर्टी को मैप करती है. मेटाटैग के लिए Apache नच सेट अप करने के तरीके के बारे में ज़्यादा जानने के लिए, 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>
    

    <Right> सेक्शन में ये पैरामीटर शामिल होते हैं:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      $ 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/क्रॉल स्क्रिप्ट में डिफ़ॉल्ट रूप से ये आर्ग्युमेंट नहीं होते.

    1. crawl स्क्रिप्ट को apache-nutch-1.15/bin में खोलें.
    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 में बदलाव करें.