این صفحه از آموزش جستجوی ابری نحوه تنظیم منبع داده و رابط محتوا برای فهرستبندی دادهها را نشان میدهد. برای شروع از ابتدای این آموزش، به آموزش شروع جستجوی ابری مراجعه کنید.
کانکتور را بسازید
دایرکتوری کاری خود را به دایرکتوری cloud-search-samples/end-to-end/connector تغییر دهید و این دستور را اجرا کنید:
mvn package -DskipTests
این دستور، وابستگیهای مورد نیاز برای ساخت رابط محتوا را دانلود کرده و کد را کامپایل میکند.
ایجاد اعتبارنامه حساب سرویس
این رابط برای فراخوانی APIهای جستجوی ابری به اعتبارنامههای حساب سرویس نیاز دارد. برای ایجاد اعتبارنامهها:
- به کنسول گوگل کلود برگردید.
- در منوی سمت چپ، روی «اعتبارنامهها » کلیک کنید. صفحه «اعتبارنامهها» ظاهر میشود.
- روی فهرست کشویی + CREATE CREDENTIALS کلیک کنید و Service account را انتخاب کنید. صفحه "Create service account" ظاهر میشود.
- در فیلد نام حساب سرویس ، عبارت «tutorial» را وارد کنید.
- به مقدار شناسه حساب سرویس (درست بعد از نام حساب سرویس) توجه کنید. این مقدار بعداً استفاده خواهد شد.
- روی «ایجاد» کلیک کنید. کادر محاورهای «مجوزهای حساب سرویس (اختیاری)» ظاهر میشود.
- روی ادامه کلیک کنید. کادر محاورهای «اعطای دسترسی کاربران به این حساب سرویس (اختیاری)» ظاهر میشود.
- روی «انجام شد» کلیک کنید. صفحه «اعتبارنامهها» ظاهر میشود.
- در قسمت حسابهای سرویس، روی ایمیل حساب سرویس کلیک کنید. صفحه «جزئیات حساب سرویس» ظاهر میشود.
- در قسمت کلیدها، روی فهرست کشویی «افزودن کلید» کلیک کنید و «ایجاد کلید جدید » را انتخاب کنید. کادر محاورهای «ایجاد کلید خصوصی» ظاهر میشود.
- روی ایجاد کلیک کنید.
- (اختیاری) اگر کادر محاورهای «آیا میخواهید دانلودها در console.cloud.google.com مجاز باشند؟» ظاهر شد، روی «مجاز کردن» کلیک کنید.
- یک فایل کلید خصوصی در رایانه شما ذخیره میشود. به محل فایل دانلود شده توجه کنید. این فایل برای پیکربندی رابط محتوا استفاده میشود تا بتواند هنگام فراخوانی APIهای جستجوی ابری گوگل، خود را احراز هویت کند.
پشتیبانی شخص ثالث را راهاندازی کنید
قبل از اینکه بتوانید هرگونه API جستجوی ابری دیگری را فراخوانی کنید، باید پشتیبانی شخص ثالث را برای جستجوی ابری گوگل راهاندازی کنید.
برای راهاندازی اولیه پشتیبانی شخص ثالث برای جستجوی ابری:
پروژه پلتفرم جستجوی ابری شما شامل اعتبارنامههای حساب سرویس است. با این حال، برای راهاندازی اولیه پشتیبانی شخص ثالث، باید اعتبارنامههای برنامه وب را ایجاد کنید. برای دستورالعملهای مربوط به نحوه ایجاد اعتبارنامههای برنامه وب، به ایجاد اعتبارنامهها مراجعه کنید. پس از تکمیل این مرحله، باید یک شناسه کلاینت و فایل مخفی کلاینت داشته باشید.
برای دریافت توکن دسترسی از محیط OAuth 2 گوگل استفاده کنید:
- روی تنظیمات کلیک کنید و اعتبارنامههای احراز هویت خودتان را بررسی کنید.
- شناسه کلاینت و رمز کلاینت را از مرحله ۱ وارد کنید.
- روی بستن کلیک کنید.
- در فیلد scopes، عبارت
https://www.googleapis.com/auth/cloud_search.settingsرا تایپ کنید و روی Authorize کلیک کنید. محیط OAuth 2 یک کد مجوز برمیگرداند. - برای توکنها روی کد مجوز اکسچنج کلیک کنید. یک توکن برگردانده میشود.
برای راهاندازی اولیه پشتیبانی شخص ثالث برای جستجوی ابری، از دستور curl زیر استفاده کنید. حتماً
[YOUR_ACCESS_TOKEN]را با توکنی که در مرحله 2 به دست آمده است، جایگزین کنید.curl --request POST \ 'https://cloudsearch.googleapis.com/v1:initializeCustomer' \ --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --data '{}' \ --compressedدر صورت موفقیت، بدنه پاسخ شامل نمونهای از
operationاست. برای مثال:{ name: "operations/customers/01b3fqdm/lro/AOIL6eBv7fEfiZ_hUSpm8KQDt1Mnd6dj5Ru3MXf-jri4xK6Pyb2-Lwfn8vQKg74pgxlxjrY" }در صورت عدم موفقیت، با پشتیبانی Cloud Search تماس بگیرید.
برای تأیید اینکه پشتیبانی شخص ثالث راهاندازی شده است، از operations.get استفاده کنید:
curl \ 'https://cloudsearch.googleapis.com/v1/operations/customers/01b3fqdm/lro/AOIL6eBv7fEfiZ_hUSpm8KQDt1Mnd6dj5Ru3MXf-jri4xK6Pyb2-Lwfn8vQKg74pgxlxjrY?key= [YOUR_API_KEY]' \ --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \ --header 'Accept: application/json' \ --compressedوقتی مقداردهی اولیه شخص ثالث کامل شد، شامل فیلد
doneمیشود که رویtrueتنظیم شده است. برای مثال:{ name: "operations/customers/01b3fqdm/lro/AOIL6eBv7fEfiZ_hUSpm8KQDt1Mnd6dj5Ru3MXf-jri4xK6Pyb2-Lwfn8vQKg74pgxlxjrY" done: true }
منبع داده را ایجاد کنید
در مرحله بعد، یک منبع داده در کنسول مدیریت ایجاد کنید. منبع داده یک فضای نام برای فهرستبندی محتوا با استفاده از کانکتور فراهم میکند.
- کنسول مدیریت گوگل را باز کنید.
- روی آیکون برنامهها کلیک کنید. صفحه «مدیریت برنامهها» ظاهر میشود.
- روی Google Workspace کلیک کنید. صفحه "Apps Google Workspace administration" نمایش داده میشود.
- به پایین اسکرول کنید و روی Cloud Search کلیک کنید. صفحه «تنظیمات Google Workspace» نمایش داده میشود.
- روی منابع داده شخص ثالث کلیک کنید. صفحه «منابع داده» ظاهر میشود.
- روی علامت + زرد دایرهای شکل کلیک کنید. کادر محاورهای «افزودن منبع داده جدید» ظاهر میشود.
- در فیلد نام نمایشی ، عبارت «tutorial» را تایپ کنید.
- در فیلد آدرسهای ایمیل حساب سرویس ، آدرس ایمیل حساب سرویسی که در بخش قبل ایجاد کردهاید را وارد کنید. اگر آدرس ایمیل حساب سرویس را نمیدانید، مقدار آن را در صفحه حسابهای سرویس جستجو کنید.
- روی افزودن کلیک کنید. کادر محاورهای «منبع داده با موفقیت ایجاد شد» ظاهر میشود.
- روی * تأیید کلیک کنید. شناسه منبع منبع داده تازه ایجاد شده را یادداشت کنید. شناسه منبع برای پیکربندی رابط محتوا استفاده میشود.
یک توکن دسترسی شخصی برای API گیتهاب ایجاد کنید
این رابط برای داشتن سهمیه کافی، نیاز به دسترسی احراز هویت شده به API گیتهاب دارد. برای سادگی، رابط به جای OAuth از توکنهای دسترسی شخصی استفاده میکند. توکنهای شخصی امکان احراز هویت به عنوان یک کاربر با مجموعهای محدود از مجوزها، مشابه OAuth، را فراهم میکنند.
- وارد گیتهاب شوید.
- در گوشه بالا سمت راست، روی تصویر پروفایل خود کلیک کنید. یک منوی کشویی ظاهر میشود.
- روی تنظیمات کلیک کنید.
- روی تنظیمات توسعهدهنده کلیک کنید.
- روی نشانههای دسترسی شخصی کلیک کنید.
- روی ایجاد توکن دسترسی شخصی کلیک کنید.
- در قسمت یادداشت ، عبارت «آموزش جستجوی ابری» را وارد کنید.
- دامنه public_repo را بررسی کنید.
- روی ایجاد توکن کلیک کنید.
- به توکن تولید شده توجه کنید. این توکن توسط کانکتور برای فراخوانی APIهای گیتهاب استفاده میشود و سهمیه API را برای انجام ایندکسگذاری فراهم میکند.
پیکربندی کانکتور
پس از ایجاد اعتبارنامهها و منبع داده، پیکربندی کانکتور را بهروزرسانی کنید تا این مقادیر را شامل شود:
- از خط فرمان، دایرکتوری را به
cloud-search-samples/end-to-end/connector/تغییر دهید. - فایل
sample-config.propertiesرا با یک ویرایشگر متن باز کنید. - پارامتر
api.serviceAccountPrivateKeyFileرا روی مسیر فایل اعتبارنامههای سرویسی که قبلاً دانلود کردهاید، تنظیم کنید. - پارامتر
api.sourceIdرا برابر با شناسه منبع دادهای که قبلاً ایجاد کردهاید، تنظیم کنید. - پارامتر
github.userرا روی نام کاربری GitHub خود تنظیم کنید. - پارامتر
github.tokenرا روی توکن دسترسی که قبلاً ایجاد کردهاید، تنظیم کنید. - فایل را ذخیره کنید.
طرحواره را بهروزرسانی کنید
این رابط، محتوای ساختاریافته و بدون ساختار را فهرستبندی میکند. قبل از فهرستبندی دادهها، باید طرحواره منبع داده را بهروزرسانی کنید. دستور زیر را برای بهروزرسانی طرحواره اجرا کنید:
mvn exec:java -Dexec.mainClass=com.google.cloudsearch.tutorial.SchemaTool \
-Dexec.args="-Dconfig=sample-config.properties"
کانکتور را اجرا کنید
برای اجرای کانکتور و شروع ایندکسگذاری، دستور زیر را اجرا کنید:
mvn exec:java -Dexec.mainClass=com.google.cloudsearch.tutorial.GithubConnector \
-Dexec.args="-Dconfig=sample-config.properties"
پیکربندی پیشفرض برای کانکتور، ایندکس کردن یک مخزن واحد در سازمان googleworkspace است. ایندکس کردن مخزن حدود ۱ دقیقه طول میکشد. پس از ایندکس اولیه، کانکتور به نظرسنجی برای یافتن تغییرات مخزن که باید در فهرست جستجوی ابری منعکس شوند، ادامه میدهد.
بررسی کد
بخشهای باقیمانده نحوه ساخت کانکتور را بررسی میکنند.
شروع برنامه
نقطه ورود به کانکتور، کلاس GithubConnector است. متد main ، نمونهای از IndexingApplication مربوط به SDK ایجاد کرده و آن را اجرا میکند.
ListingConnector ارائه شده توسط SDK یک استراتژی پیمایش را پیادهسازی میکند که از صفهای جستجوی ابری برای ردیابی وضعیت اقلام در فهرست استفاده میکند. این ابزار برای دسترسی به محتوا از GithubRepository که توسط رابط نمونه پیادهسازی شده است، استفاده میکند.
پیمایش مخازن گیتهاب
در طول پیمایشهای کامل، متد getIds() فراخوانی میشود تا مواردی را که ممکن است نیاز به اندیسگذاری در صف داشته باشند، وارد صف کند.
این رابط میتواند چندین مخزن یا سازمان را فهرستبندی کند. برای به حداقل رساندن تأثیر یک شکست، یک مخزن GitHub در یک زمان پیمایش میشود. یک نقطه بررسی با نتایج پیمایش که شامل لیست مخازنی است که باید در فراخوانیهای بعدی getIds() فهرستبندی شوند، بازگردانده میشود. در صورت بروز خطا، فهرستبندی به جای شروع از ابتدا، در مخزن فعلی از سر گرفته میشود.
متد collectRepositoryItems() پیمایش یک مخزن GitHub را مدیریت میکند. این متد مجموعهای از ApiOperations را برمیگرداند که نشاندهندهی آیتمهایی است که باید به صف اضافه شوند. آیتمها به صورت نام منبع و یک مقدار هش که نشاندهندهی وضعیت فعلی آیتم است، اضافه میشوند.
مقدار هش در پیمایشهای بعدی مخازن GitHub استفاده میشود. این مقدار، بررسی سبکی را برای تعیین اینکه آیا محتوا تغییر کرده است یا خیر، بدون نیاز به آپلود محتوای اضافی، فراهم میکند. کانکتور به طور کورکورانه همه موارد را در صف قرار میدهد. اگر مورد جدید باشد یا مقدار هش تغییر کرده باشد، برای نظرسنجی در صف در دسترس قرار میگیرد. در غیر این صورت، مورد اصلاح نشده در نظر گرفته میشود.
پردازش صف
پس از اتمام پیمایش کامل، رابط شروع به نمونهبرداری از صف برای یافتن آیتمهایی میکند که نیاز به ایندکس شدن دارند. متد getDoc() برای هر آیتمی که از صف بیرون کشیده میشود، فراخوانی میشود. این متد، آیتم را از GitHub میخواند و آن را به نمایش مناسب برای ایندکس شدن تبدیل میکند.
از آنجایی که کانکتور در حال اجرا بر روی دادههای زندهای است که ممکن است در هر زمانی تغییر کنند، getDoc() همچنین تأیید میکند که آیتم موجود در صف هنوز معتبر است و هر آیتمی را از ایندکس که دیگر وجود ندارد حذف میکند.
برای هر یک از اشیاء گیتهابِ اندیسهای رابط، متد indexItem() مربوطه، ساخت نمایش آیتم برای جستجوی ابری را مدیریت میکند. به عنوان مثال، برای ساخت نمایش آیتمهای محتوا:
در مرحله بعد، رابط جستجو را مستقر کنید.