একটি Apache Nutch Indexer প্লাগইন স্থাপন করুন

আপনি ওপেন সোর্স ওয়েব ক্রলার অ্যাপাচি নাট্‌চ (Apache Nutch)-এর ক্লাউড সার্চ ইনডেক্সার প্লাগইনটি স্থাপন করে আপনার ব্যবহারকারীদের কাছে ওয়েব কন্টেন্ট পরিবেশন করার জন্য গুগল ক্লাউড সার্চ সেট আপ করতে পারেন।

যখন আপনি ওয়েব ক্রল শুরু করেন, তখন অ্যাপাচি নাট্চ ওয়েব ক্রল করে এবং ইনডেক্সার প্লাগইন ব্যবহার করে ডকুমেন্ট কন্টেন্টের আসল বাইনারি (বা টেক্সট) সংস্করণ গুগল ক্লাউড সার্চ এপিআই-তে আপলোড করে। ক্লাউড সার্চ এপিআই সেই কন্টেন্টকে ইনডেক্স করে এবং আপনার ব্যবহারকারীদের কাছে ফলাফল পরিবেশন করে।

গুরুত্বপূর্ণ বিবেচ্য বিষয়

ইনডেক্সার প্লাগইনটি ডেপ্লয় করার আগে নিম্নলিখিত বিষয়গুলো সম্পর্কে সচেতন থাকুন।

সিস্টেমের প্রয়োজনীয়তা

সিস্টেমের প্রয়োজনীয়তা
অপারেটিং সিস্টেম শুধুমাত্র লিনাক্সের জন্য:
  • উবুন্টু
  • রেড হ্যাট এন্টারপ্রাইজ লিনাক্স ৫.০
  • SUSE এন্টারপ্রাইজ লিনাক্স ১০ (৬৪ বিট)
সফটওয়্যার
  • অ্যাপাচি নাট্চ সংস্করণ ১.১৫। ইনডেক্সার প্লাগইন সফটওয়্যারটিতে নাট্চের এই সংস্করণটি অন্তর্ভুক্ত রয়েছে।
  • যে কম্পিউটারে ইনডেক্সার প্লাগইনটি চালানো হবে, সেখানে জাভা জেআরই ১.৮ ইনস্টল করা আছে।
অ্যাপাচি টিকা ডকুমেন্ট টাইপ অ্যাপাচি টিকা ১.১৮ সমর্থিত ডকুমেন্ট ফরম্যাট

ইনডেক্সার প্লাগইনটি স্থাপন করুন

এই ধাপগুলোতে ইনডেক্সার প্লাগইন ইনস্টল করার এবং ইউআরএল ক্রল করে ক্লাউড সার্চে ফলাফল ফেরত পাঠানোর জন্য এর উপাদানগুলো কনফিগার করার পদ্ধতি বর্ণনা করা হয়েছে।

পূর্বশর্ত

ইনডেক্সার প্লাগইনটি ডেপ্লয় করার আগে, ক্লাউড সার্চ এবং ডেটা সোর্স সংযোগ করার জন্য প্রয়োজনীয় তথ্য সংগ্রহ করুন:

ধাপ ১: প্লাগইন সফটওয়্যার এবং অ্যাপাচি নাটচ তৈরি ও ইনস্টল করুন

  1. গিটহাব থেকে ইনডেক্সার প্লাগইন রিপোজিটরিটি ক্লোন করুন।

    $ 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 নামে একটি ফাইল তৈরি করুন। ক্লাউড সার্চ ডেটা সোর্স অ্যাক্সেস করার জন্য কনফিগারেশন ফাইলটিতে নিম্নলিখিত প্যারামিটারগুলো অবশ্যই উল্লেখ করতে হবে।

সেটিং প্যারামিটার
ডেটা উৎস আইডি api.sourceId = 1234567890abcdef
প্রয়োজনীয়। ক্লাউড সার্চ সোর্স আইডি, যা গুগল ওয়ার্কস্পেস অ্যাডমিনিস্ট্রেটর ইনডেক্সার প্লাগইনের জন্য সেট আপ করেছেন।
পরিষেবা অ্যাকাউন্ট api.serviceAccountPrivateKeyFile = ./PrivateKey.json
ইনডেক্সার প্লাগইনের অ্যাক্সেসযোগ্যতার জন্য গুগল ওয়ার্কস্পেস অ্যাডমিনিস্ট্রেটর কর্তৃক তৈরি ক্লাউড সার্চ সার্ভিস অ্যাকাউন্ট কী ফাইলটি প্রয়োজন।

নিম্নলিখিত উদাহরণটি একটি নমুনা কনফিগারেশন ফাইল দেখাচ্ছে:

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

কনফিগারেশন ফাইলে এমন প্যারামিটারও থাকতে পারে যা প্লাগইনের আচরণ নিয়ন্ত্রণ করে, যেমন প্লাগইনটি কীভাবে ক্লাউড সার্চ এপিআই-তে ডেটা পাঠায় এবং কীভাবে মেটাডেটা ও স্ট্রাকচার্ড ডেটা পূরণ করে। এই প্যারামিটারগুলোর বিবরণের জন্য, গুগল-সরবরাহকৃত কানেক্টর প্যারামিটার দেখুন।

ধাপ ৩: অ্যাপাচি নাটচ কনফিগার করুন

  1. conf/nutch-site.xml খুলুন এবং নিম্নলিখিত প্যারামিটারগুলো যোগ করুন:

    সেটিং প্যারামিটার
    প্লাগইন অন্তর্ভুক্ত plugin.includes = text

    প্রয়োজনীয়। ব্যবহারযোগ্য প্লাগইনগুলির তালিকা। এতে অন্তত নিম্নলিখিতগুলি অবশ্যই অন্তর্ভুক্ত থাকতে হবে:

    • সূচক-মৌলিক
    • সূচক-আরও
    • ইনডেক্সার-গুগল-ক্লাউডসার্চ
    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> বিভাগে নিম্নলিখিত প্যারামিটারগুলো রয়েছে:

    সেটিং প্যারামিটার
    ক্লাউড সার্চ কনফিগারেশন ফাইলের পথ gcs.config.file = path

    আবশ্যক। ক্লাউড সার্চ কনফিগারেশন ফাইলের সম্পূর্ণ (অ্যাবসোলিউট) পাথ।

    আপলোড ফরম্যাট gcs.uploadFormat = text

    ঐচ্ছিক। ক্লাউড সার্চ এপিআই-তে ডকুমেন্টের বিষয়বস্তু পাঠানোর জন্য প্লাগইনটি যে ফরম্যাট ব্যবহার করে। বৈধ মানগুলো হলো:

    • raw : মূল, অপরিবর্তিত কন্টেন্ট পাঠায়।
    • text : নিষ্কাশিত পাঠ্য বিষয়বস্তু প্রদর্শন করে। ডিফল্ট হলো raw

ধাপ ৪: ওয়েব ক্রল কনফিগার করুন

ওয়েব ক্রল শুরু করার আগে, এটিকে এমনভাবে কনফিগার করুন যাতে এটি শুধুমাত্র সেই তথ্যই অন্তর্ভুক্ত করে যা আপনার সংস্থা প্রকাশ করতে চায়। আরও তথ্যের জন্য, Nutch টিউটোরিয়ালটি দেখুন।

  1. প্রারম্ভিক ইউআরএল সেট আপ করুন।

    স্টার্ট ইউআরএল (Start URL) নিয়ন্ত্রণ করে যে ওয়েব ক্রলার আপনার কন্টেন্ট কোথা থেকে ক্রল করা শুরু করবে। ক্রলারকে অবশ্যই লিঙ্কগুলো অনুসরণ করে আপনার অন্তর্ভুক্ত করতে চাওয়া সমস্ত কন্টেন্টে পৌঁছাতে সক্ষম হতে হবে।

    স্টার্ট ইউআরএল সেট আপ করতে:

    1. Nutch ইনস্টলেশন ডিরেক্টরিতে যান:
      $ cd ~/nutch/apache-nutch-X.Y/
    2. URL-গুলির জন্য একটি ডিরেক্টরি তৈরি করুন:
      $ mkdir urls
    3. seed.txt নামে একটি ফাইল তৈরি করুন এবং প্রতি লাইনে একটি করে URL তালিকাভুক্ত করুন।
  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 ফাইলটি সম্পাদনা করুন।