یک پلاگین Apache Nutch Indexer را نصب کنید

شما می‌توانید با استفاده از افزونه‌ی ایندکس‌کننده‌ی Cloud Search برای Apache Nutch ، که یک خزنده‌ی وب متن‌باز است، Google Cloud Search را برای ارائه محتوای وب به کاربران خود تنظیم کنید.

وقتی خزش وب را شروع می‌کنید، آپاچی ناچ وب را می‌خزد و از افزونه‌ی ایندکس‌کننده برای آپلود نسخه‌های باینری (یا متنی) اصلی محتوای سند به API جستجوی ابری گوگل استفاده می‌کند. API جستجوی ابری محتوا را ایندکس کرده و نتایج را به کاربران شما ارائه می‌دهد.

ملاحظات مهم

قبل از اینکه افزونه‌ی ایندکسِر را نصب کنید، نکات زیر را در نظر داشته باشید.

الزامات سیستم

الزامات سیستم
سیستم عامل فقط لینوکس:
  • اوبونتو
  • لینوکس رد هت انترپرایز ۵.۰
  • سوزه انترپرایز لینوکس ۱۰ (۶۴ بیتی)
نرم‌افزار
  • آپاچی ناچ نسخه ۱.۱۵. نرم‌افزار افزونه ایندکس‌کننده شامل این نسخه از ناچ می‌شود.
  • جاوا JRE 1.8 روی رایانه‌ای که افزونه‌ی ایندکس‌کننده روی آن اجرا می‌شود، نصب شده باشد.
انواع سند آپاچی تیکا فرمت‌های سند پشتیبانی‌شده توسط آپاچی تیکا ۱.۱۸

افزونه ایندکس کننده را مستقر کنید

این مراحل نحوه نصب افزونه ایندکس کننده و پیکربندی اجزای آن برای خزش URL ها و بازگرداندن نتایج به Cloud Search را شرح می‌دهد.

پیش‌نیازها

قبل از اینکه افزونه ایندکس کننده را مستقر کنید، اطلاعات مورد نیاز برای اتصال جستجوی ابری و منبع داده را جمع آوری کنید:

مرحله ۱: ساخت و نصب نرم‌افزار افزونه و آپاچی ناچ

  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. آپاچی ناچ ۱.۱۵ را دانلود کنید و دستورالعمل‌های نصب آپاچی ناچ را دنبال کنید.

  5. target/google-cloudsearch-apache-nutch-indexer-plugin-v1.0.0.5.zip را در یک پوشه استخراج کنید. پوشه plugins/indexer-google-cloudsearch را در پوشه plugins آپاچی ناچ ( apache-nutch-1.15/plugins ) کپی کنید.

مرحله ۲: پیکربندی افزونه ایندکس کننده

برای پیکربندی افزونه، فایلی با نام plugin-configuration.properties ایجاد کنید. فایل پیکربندی باید پارامترهای زیر را برای دسترسی به منبع داده Cloud Search مشخص کند.

تنظیم پارامتر
شناسه منبع داده api.sourceId = 1234567890abcdef
الزامی. شناسه منبع جستجوی ابری که مدیر Google Workspace برای افزونه ایندکس‌کننده تنظیم کرده است.
حساب کاربری خدمات api.serviceAccountPrivateKeyFile = ./PrivateKey.json
الزامی. فایل کلید حساب سرویس جستجوی ابری که مدیر Google Workspace برای دسترسی به افزونه ایندکس‌کننده ایجاد کرده است.

مثال زیر یک فایل پیکربندی نمونه را نشان می‌دهد:

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

فایل پیکربندی همچنین می‌تواند شامل پارامترهایی باشد که رفتار افزونه را کنترل می‌کنند، مانند نحوه ارسال داده‌ها توسط افزونه به Cloud Search API و نحوه پر کردن فراداده‌ها و داده‌های ساختاریافته. برای توضیحات این پارامترها، به پارامترهای اتصال ارائه شده توسط گوگل مراجعه کنید.

مرحله ۳: پیکربندی آپاچی ناچ

  1. conf/nutch-site.xml را باز کنید و پارامترهای زیر را به آن اضافه کنید:

    تنظیم پارامتر
    افزونه شامل plugin.includes = text

    الزامی. فهرست افزونه‌های مورد استفاده. این فهرست باید حداقل شامل موارد زیر باشد:

    • شاخص-پایه
    • فهرست بیشتر
    • ایندکس کننده-گوگل-کلودسرچ
    conf/nutch-default.xml یک مقدار پیش‌فرض ارائه می‌دهد، اما شما باید به صورت دستی indexer-google-cloudsearch به آن اضافه کنید.
    نام‌های متاتگ metatags.names = text

    اختیاری. فهرستی از تگ‌های جدا شده با کاما که به ویژگی‌های موجود در طرحواره منبع داده مربوطه نگاشت می‌شوند. برای کسب اطلاعات بیشتر، به متاتگ‌های 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> شامل پارامترهای زیر است:

    تنظیم پارامتر
    مسیر فایل پیکربندی جستجوی ابری gcs.config.file = path

    الزامی. مسیر کامل (مطلق) فایل پیکربندی Cloud Search.

    قالب بارگذاری gcs.uploadFormat = text

    اختیاری. قالبی که افزونه برای ارسال محتوای سند به Cloud Search API استفاده می‌کند. مقادیر معتبر عبارتند از:

    • raw : محتوای اصلی و تبدیل نشده را ارائه می‌دهد.
    • text : محتوای متنی استخراج‌شده را ارسال می‌کند. مقدار پیش‌فرض raw است.

مرحله ۴: پیکربندی خزش وب

قبل از شروع خزش وب، آن را طوری پیکربندی کنید که فقط شامل اطلاعاتی باشد که سازمان شما می‌خواهد در دسترس قرار دهد. برای اطلاعات بیشتر، به آموزش Nutch مراجعه کنید.

  1. URL های شروع را تنظیم کنید.

    شروع URLها، جایی را که خزنده وب شروع به خزیدن محتوای شما می‌کند، کنترل می‌کند. خزنده باید بتواند با دنبال کردن لینک‌ها به تمام محتوایی که می‌خواهید در سایت قرار دهید، دسترسی پیدا کند.

    برای تنظیم URL های شروع:

    1. به پوشه نصب Nutch بروید:
      $ cd ~/nutch/apache-nutch-X.Y/
    2. ایجاد یک دایرکتوری برای URLها:
      $ mkdir urls
    3. یک فایل با نام seed.txt ایجاد کنید و در هر خط یک آدرس اینترنتی (URL) را فهرست کنید.
  2. قوانینی برای پیروی و عدم پیروی وضع کنید.

    قوانین دنبال کردن URL، URLهایی را که خزنده ایندکس می‌کند، کنترل می‌کند. قوانین دنبال نکردن، URLها را از خزش مستثنی می‌کنند.

    برای تنظیم این قوانین:

    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" تنظیم شده است، باید آرگومان‌های -addBinaryContent -base64 را به دستور nutch index اضافه کنید. این آرگومان‌ها به ماژول Nutch Indexer می‌گویند که محتوای باینری را در Base64 لحاظ کند.

    1. اسکریپت crawl را در apache-nutch-1.15/bin باز کنید.
    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 برای اجرای یک کار خزش استفاده کنید.

مثال زیر فرض می‌کند که کامپوننت‌ها در دایرکتوری محلی قرار دارند. Nutch را از دایرکتوری apache-nutch-1.15 اجرا کنید:

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

گزارش‌های خزش در ترمینال یا دایرکتوری logs/ موجود هستند. برای هدایت خروجی گزارش‌گیری، conf/log4j.properties را ویرایش کنید.