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

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

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

ज़रूरी बातें

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

सिस्टम के लिए ज़रूरी शर्तें
ऑपरेटिंग सिस्टम सिर्फ़ 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

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

    • इंडेक्स-बेसिक
    • इंडेक्स-ज़्यादा
    • इंडेक्सर-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>
    

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

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

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

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

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

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

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

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

  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" आर्ग्युमेंट जोड़ने होंगे. ये तर्क, नच इंडेक्सर मॉड्यूल को 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 ..."
      

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

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

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

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

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