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

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

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

ملاحظات مهم

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

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

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

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

پیش‌نیازها

قبل از اینکه افزونه‌ی ایندکس‌کننده‌ی Cloud Search Apache Nutch را پیاده‌سازی کنید، اطلاعات لازم برای اتصال Google 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 را در پوشه نصب افزونه‌های آپاچی ناچ ( apache-nutch-1.15/plugins ) کپی کنید.

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

برای پیکربندی افزونه‌ی Apache Nutch Indexer، فایلی با نام plugin-configuration.properties ایجاد کنید.

فایل پیکربندی باید پارامترهای زیر را که برای دسترسی به منبع داده جستجوی ابری گوگل ضروری هستند، مشخص کند.

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

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

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

فایل پیکربندی همچنین می‌تواند شامل پارامترهای دیگری باشد که رفتار افزونه‌ی ایندکس‌کننده را کنترل می‌کنند. می‌توانید نحوه‌ی ارسال داده‌ها توسط افزونه به Cloud Search API، defaultAcl.* و batch.* را پیکربندی کنید. همچنین می‌توانید نحوه‌ی پر کردن فراداده‌ها و داده‌های ساختاریافته توسط افزونه‌ی ایندکس‌کننده را پیکربندی کنید.

برای توضیحات این پارامترها، به پارامترهای کانکتور ارائه شده توسط گوگل مراجعه کنید.

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

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

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

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

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

    اختیاری. فهرستی از تگ‌ها که با کاما از هم جدا شده‌اند و به ویژگی‌های موجود در طرحواره منبع داده مربوطه نگاشت می‌شوند. برای کسب اطلاعات بیشتر در مورد نحوه تنظیم آپاچی ناچ برای متاتگ‌ها، به متاتگ‌های تجزیه ناچ مراجعه کنید.

    مثال زیر اصلاح مورد نیاز در 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

    اختیاری. قالبی که افزونه ایندکس کننده، محتوای سند را با آن به API ایندکس کننده جستجوی ابری گوگل ارسال می‌کند. مقادیر معتبر عبارتند از:

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

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

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

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

    آدرس‌های شروع (Start URLs) کنترل می‌کنند که خزنده وب آپاچی ناچ (Apache Nutch) از کجا شروع به خزش محتوای شما می‌کند. آدرس‌های شروع باید به خزنده وب این امکان را بدهند که با دنبال کردن لینک‌ها به تمام محتوایی که می‌خواهید در یک خزش خاص قرار دهید، دسترسی پیدا کند. وجود آدرس‌های شروع الزامی است.

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

    1. دایرکتوری کاری را به دایرکتوری نصب nutch تغییر دهید:

      $ cd ~/nutch/apache-nutch-X.Y/
    2. ایجاد یک دایرکتوری برای آدرس‌های اینترنتی (url):

      $ mkdir urls
    3. یک فایل با نام seed.txt ایجاد کنید و آدرس‌های اینترنتی (URL) را در آن فهرست کنید، به طوری که در هر خط، یک آدرس اینترنتی (URL) وجود داشته باشد.

  2. قوانینی برای پیروی و عدم پیروی وضع کنید.

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

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

    برای تنظیم قوانین URL مربوط به دنبال کردن و دنبال نکردن:

    1. دایرکتوری کاری را به دایرکتوری نصب nutch تغییر دهید:

      $ cd ~/nutch/apache-nutch-X.Y/
    2. برای تغییر قوانین follow/do-not-follow، conf/regex-urlfilter.txt را ویرایش کنید: \

      $ nano conf/regex-urlfilter.txt
    3. عبارات منظم را با پیشوند "+" یا "-" برای دنبال کردن/دنبال نکردن الگوها و افزونه‌های URL، همانطور که در مثال‌های زیر نشان داده شده است، وارد کنید. عبارات با پایان باز مجاز هستند.

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

مرحله ۵: شروع خزش وب و آپلود محتوا

پس از نصب و راه‌اندازی افزونه‌ی ایندکس‌کننده، می‌توانید آن را به صورت محلی اجرا کنید. از اسکریپت‌های ./bin برای اجرای یک کار خزش یا دستورات جداگانه‌ی Nutch استفاده کنید.

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

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

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