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

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

वेब क्रॉल शुरू करने पर, Apache Nutch वेब को क्रॉल करता है. साथ ही, इंडेक्सर प्लगिन का इस्तेमाल करके, दस्तावेज़ के कॉन्टेंट के ओरिजनल बाइनरी (या टेक्स्ट) वर्शन को Google Cloud Search Indexing API पर अपलोड करता है. 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 indexer प्लगिन को डिप्लॉय करने से पहले, 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 को कॉन्फ़िगर करने के लिए, 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 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> सेक्शन में ये पैरामीटर शामिल होते हैं:

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

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

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

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

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

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