شما میتوانید با استفاده از افزونهی ایندکسکنندهی Google Cloud Search برای Apache Nutch ، که یک خزندهی وب متنباز است، Google Cloud Search را برای ارائه محتوای وب به کاربران خود تنظیم کنید.
وقتی خزش وب را شروع میکنید، آپاچی ناچ وب را میخزد و از افزونهی ایندکسکننده برای آپلود نسخههای باینری (یا متنی) اصلی محتوای سند به API ایندکسگذاری جستجوی ابری گوگل استفاده میکند. API ایندکسگذاری، محتوا را ایندکس کرده و نتایج را در اختیار کاربران شما قرار میدهد.
ملاحظات مهم
الزامات سیستم
| الزامات سیستم | |
|---|---|
| سیستم عامل | فقط لینوکس:
|
| نرمافزار |
|
| انواع سند آپاچی تیکا | فرمتهای سند پشتیبانیشده توسط آپاچی تیکا ۱.۱۸ |
افزونه ایندکس کننده را مستقر کنید
مراحل زیر نحوه نصب افزونه ایندکس کننده و پیکربندی اجزای آن برای خزیدن URL های مشخص شده و بازگرداندن نتایج به Cloud Search را شرح میدهد.
پیشنیازها
قبل از اینکه افزونهی ایندکسکنندهی Cloud Search Apache Nutch را پیادهسازی کنید، اطلاعات لازم برای اتصال Google Cloud Search و منبع داده را جمعآوری کنید:
- کلید خصوصی Google Workspace (که شامل شناسه حساب سرویس است). برای اطلاعات بیشتر در مورد دریافت کلید خصوصی، به پیکربندی دسترسی به API جستجوی ابری گوگل (Configure access to the Google 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را در پوشه نصب افزونههای آپاچی ناچ (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.* را پیکربندی کنید. همچنین میتوانید نحوهی پر کردن فرادادهها و دادههای ساختاریافته توسط افزونهی ایندکسکننده را پیکربندی کنید.
برای توضیحات این پارامترها، به پارامترهای کانکتور ارائه شده توسط گوگل مراجعه کنید.
مرحله ۳: پیکربندی آپاچی ناچ
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>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 مراجعه کنید.
URL های شروع را تنظیم کنید.
آدرسهای شروع (Start URLs) کنترل میکنند که خزنده وب آپاچی ناچ (Apache Nutch) از کجا شروع به خزش محتوای شما میکند. آدرسهای شروع باید به خزنده وب این امکان را بدهند که با دنبال کردن لینکها به تمام محتوایی که میخواهید در یک خزش خاص قرار دهید، دسترسی پیدا کند. وجود آدرسهای شروع الزامی است.
برای تنظیم URL های شروع:
دایرکتوری کاری را به دایرکتوری نصب nutch تغییر دهید:
$ cd ~/nutch/apache-nutch-X.Y/
ایجاد یک دایرکتوری برای آدرسهای اینترنتی (url):
$ mkdir urls
یک فایل با نام
seed.txtایجاد کنید و آدرسهای اینترنتی (URL) را در آن فهرست کنید، به طوری که در هر خط، یک آدرس اینترنتی (URL) وجود داشته باشد.
قوانینی برای پیروی و عدم پیروی وضع کنید.
قوانین دنبال کردن URL، کنترل میکنند که کدام URLها خزش داده شده و در فهرست جستجوی ابری گوگل قرار گیرند. خزنده وب، URLها را با قوانین دنبال کردن URL بررسی میکند. فقط URLهایی که با این قوانین مطابقت دارند، خزش داده شده و فهرست میشوند.
قوانین عدم پیروی، URLها را از خزش و قرار گرفتن در فهرست جستجوی ابری گوگل محروم میکنند. اگر یک URL حاوی الگوی عدم خزش باشد، خزنده وب آن را خزش نمیکند.
برای تنظیم قوانین URL مربوط به دنبال کردن و دنبال نکردن:
دایرکتوری کاری را به دایرکتوری نصب nutch تغییر دهید:
$ cd ~/nutch/apache-nutch-X.Y/
برای تغییر قوانین follow/do-not-follow،
conf/regex-urlfilter.txtرا ویرایش کنید: \$ nano conf/regex-urlfilter.txt
عبارات منظم را با پیشوند "+" یا "-" برای دنبال کردن/دنبال نکردن الگوها و افزونههای 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) #+.
اسکریپت خزش را ویرایش کنید.
اگر پارامتر
gcs.uploadFormatوجود ندارد یا روی "raw" تنظیم شده است، باید آرگومانهای "-addBinaryContent -base64" را برای ارسال به دستورnutch indexاضافه کنید. این آرگومانها به ماژول Nutch Indexer میگویند که هنگام فراخوانی افزونه indexer، محتوای باینری را در Base64 لحاظ کند. اسکریپت ./bin/crawl به طور پیشفرض این آرگومانها را ندارد.- اسکریپت
crawlرا درapache-nutch-1.15/binباز کنید. گزینههای
-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 را ویرایش کنید.