شما میتوانید با استفاده از افزونهی ایندکسکنندهی Cloud Search برای Apache Nutch ، که یک خزندهی وب متنباز است، Google Cloud Search را برای ارائه محتوای وب به کاربران خود تنظیم کنید.
وقتی خزش وب را شروع میکنید، آپاچی ناچ وب را میخزد و از افزونهی ایندکسکننده برای آپلود نسخههای باینری (یا متنی) اصلی محتوای سند به API جستجوی ابری گوگل استفاده میکند. API جستجوی ابری محتوا را ایندکس کرده و نتایج را به کاربران شما ارائه میدهد.
ملاحظات مهم
قبل از اینکه افزونهی ایندکسِر را نصب کنید، نکات زیر را در نظر داشته باشید.
الزامات سیستم
| الزامات سیستم | |
|---|---|
| سیستم عامل | فقط لینوکس:
|
| نرمافزار |
|
| انواع سند آپاچی تیکا | فرمتهای سند پشتیبانیشده توسط آپاچی تیکا ۱.۱۸ |
افزونه ایندکس کننده را مستقر کنید
این مراحل نحوه نصب افزونه ایندکس کننده و پیکربندی اجزای آن برای خزش URL ها و بازگرداندن نتایج به Cloud Search را شرح میدهد.
پیشنیازها
قبل از اینکه افزونه ایندکس کننده را مستقر کنید، اطلاعات مورد نیاز برای اتصال جستجوی ابری و منبع داده را جمع آوری کنید:
- کلید خصوصی Google Workspace (که شامل شناسه حساب سرویس است). برای اطلاعات بیشتر در مورد دریافت کلید خصوصی، به پیکربندی دسترسی به Cloud Search API مراجعه کنید.
- شناسه منبع داده Google Workspace. برای کسب اطلاعات در مورد دریافت شناسه منبع داده، به افزودن منبع داده برای جستجو بروید.
مرحله ۱: ساخت و نصب نرمافزار افزونه و آپاچی ناچ
مخزن افزونههای ایندکسکننده را از گیتهاب کپی کنید.
$ git clone https://github.com/google-cloudsearch/apache-nutch-indexer-plugin.git $ cd apache-nutch-indexer-plugin
نسخه افزونه ایندکس کننده مورد نظر خود را بررسی کنید:
$ git checkout tags/v1-0.0.5
افزونه ایندکس کننده را بسازید.
$ mvn package
برای رد کردن تستها هنگام ساخت افزونه، از
mvn package -DskipTestsاستفاده کنید.آپاچی ناچ ۱.۱۵ را دانلود کنید و دستورالعملهای نصب آپاچی ناچ را دنبال کنید.
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 و نحوه پر کردن فرادادهها و دادههای ساختاریافته. برای توضیحات این پارامترها، به پارامترهای اتصال ارائه شده توسط گوگل مراجعه کنید.
مرحله ۳: پیکربندی آپاچی ناچ
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>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 مراجعه کنید.
URL های شروع را تنظیم کنید.
شروع URLها، جایی را که خزنده وب شروع به خزیدن محتوای شما میکند، کنترل میکند. خزنده باید بتواند با دنبال کردن لینکها به تمام محتوایی که میخواهید در سایت قرار دهید، دسترسی پیدا کند.
برای تنظیم URL های شروع:
- به پوشه نصب Nutch بروید:
$ cd ~/nutch/apache-nutch-X.Y/
- ایجاد یک دایرکتوری برای URLها:
$ mkdir urls
- یک فایل با نام
seed.txtایجاد کنید و در هر خط یک آدرس اینترنتی (URL) را فهرست کنید.
- به پوشه نصب Nutch بروید:
قوانینی برای پیروی و عدم پیروی وضع کنید.
قوانین دنبال کردن URL، URLهایی را که خزنده ایندکس میکند، کنترل میکند. قوانین دنبال نکردن، URLها را از خزش مستثنی میکنند.
برای تنظیم این قوانین:
- به پوشه نصب Nutch بروید.
-
conf/regex-urlfilter.txtرا ویرایش کنید:$ nano conf/regex-urlfilter.txt
عبارات منظم را با پیشوند "+" یا "-" وارد کنید:
# 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 #+.
اسکریپت خزش را ویرایش کنید.
اگر پارامتر
gcs.uploadFormatوجود ندارد یا روی "raw" تنظیم شده است، باید آرگومانهای-addBinaryContent -base64را به دستورnutch indexاضافه کنید. این آرگومانها به ماژول Nutch Indexer میگویند که محتوای باینری را در Base64 لحاظ کند.- اسکریپت
crawlرا درapache-nutch-1.15/binباز کنید. گزینهها را همانطور که در این مثال نشان داده شده است اضافه کنید:
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 را ویرایش کنید.