صف های نمایه سازی Google Cloud Search

رابط توسعه نرم‌افزار (SDK) و رابط برنامه‌نویسی کاربردی جستجوی ابری (Cloud Search API) از ایجاد صف‌های نمایه‌سازی جستجوی ابری (Cloud Search Indexing Queues) پشتیبانی می‌کنند. از این صف‌ها برای موارد زیر استفاده کنید:

  • وضعیت هر سند (وضعیت، هش‌ها و غیره) را حفظ کنید تا فهرست شما همگام بماند.
  • فهرستی از مواردی که باید ایندکس شوند، همانطور که در طول پیمایش کشف می‌شوند، نگهداری کنید.
  • موارد را بر اساس وضعیتشان اولویت‌بندی کنید.
  • اطلاعات وضعیت مانند نقاط بازرسی و توکن‌های تغییر را حفظ کنید.

صف، برچسبی است که به یک آیتم اندیس‌گذاری شده (مثلاً «پیش‌فرض») اختصاص داده می‌شود.

وضعیت و اولویت

اولویت یک سند به کد ItemStatus آن بستگی دارد. کدهای ممکن، به ترتیب اولویت (بالاترین تا پایین‌ترین)، عبارتند از:

  • ERROR : مورد با خطای ناهمزمان مواجه شد و نیاز به فهرست‌بندی مجدد دارد.
  • MODIFIED : این مورد قبلاً فهرست‌بندی شده بود اما در مخزن تغییر کرده است.
  • NEW_ITEM : این آیتم هنوز ایندکس نشده است.
  • ACCEPTED : این مورد قبلاً فهرست‌بندی شده بود و تغییر نکرده است.

برای مواردی با وضعیت یکسان، اولویت بالاتر به مواردی تعلق می‌گیرد که مدت طولانی‌تری در صف بوده‌اند.

یک آیتم جدید یا تغییر یافته را فهرست بندی کنید

شکل ۱ مراحل ایندکس کردن یک آیتم جدید یا تغییر یافته با استفاده از صف ایندکس گذاری را نشان می‌دهد. این مراحل منعکس کننده فراخوانی‌های REST API هستند؛ برای معادل‌های SDK، به عملیات صف (Connector SDK) مراجعه کنید.

مروری بر نمایه‌سازی جستجوی ابری
شکل ۱. مراحل ایندکس‌گذاری برای افزودن یا به‌روزرسانی یک آیتم
  1. رابط محتوا از items.push برای ارسال فراداده‌ها و هش‌ها به یک صف استفاده می‌کند.
    • اگر کانکتور شامل type ارسال یا contentHash باشد، Cloud Search وضعیت را تعیین می‌کند.
    • اقلام ناشناخته وضعیت NEW_ITEM دریافت می‌کنند.
    • موارد موجود با هش‌های منطبق، همچنان ACCEPTED می‌شوند.
    • موارد موجود با هش‌های متفاوت، MODIFIED تبدیل می‌شوند.
  2. کانکتور از items.poll برای تعیین اینکه کدام آیتم‌ها را باید ایندکس کند استفاده می‌کند. Cloud Search آیتم‌ها را به ترتیب اولویت برمی‌گرداند.
  3. کانکتور موارد را از مخزن بازیابی می‌کند و درخواست‌های API شاخص را می‌سازد.
  4. کانکتور از items.index برای فهرست‌بندی آیتم‌ها استفاده می‌کند. یک آیتم پس از پردازش موفقیت‌آمیز وارد حالت ACCEPTED می‌شود.

حذف یک مورد

استراتژی پیمایش کامل از دو صف برای فهرست‌بندی اقلام و تشخیص حذف‌ها استفاده می‌کند. شکل ۲ پیمایش دوم را در این استراتژی نشان می‌دهد.

مروری بر نمایه‌سازی جستجوی ابری
شکل ۲. حذف موارد
  1. در پیمایش اولیه، رابط، آیتم‌ها را با عنوان NEW_ITEM به «صف A» ارسال می‌کند. هر آیتم برچسب «A» را دریافت می‌کند.
  2. رابط، صف A را بررسی کرده و آیتم‌ها را فهرست‌بندی می‌کند.
  3. در دومین پیمایش کامل، رابط، آیتم‌ها را به «صف B» منتقل می‌کند.
    • اقلام ناشناخته برچسب "B" و وضعیت NEW_ITEM را دریافت می‌کنند.
    • موارد موجود با هش‌های منطبق، برچسب خود را به "B" تغییر می‌دهند و همچنان ACCEPTED باقی می‌مانند.
    • موارد موجود با هش‌های متفاوت، برچسب خود را به "B" تغییر می‌دهند و به MODIFIED تبدیل می‌شوند.
  4. رابط، صف B را بررسی کرده و آیتم‌ها را فهرست‌بندی می‌کند.
  5. در نهایت، رابط، تابع deleteQueueItems را در صف A فراخوانی می‌کند. این تابع، تمام آیتم‌های قبلاً اندیس‌گذاری شده‌ای که هنوز برچسب "A" دارند را حذف می‌کند.
  6. پیمایش‌های بعدی نقش‌های دو صف را عوض می‌کنند.

عملیات صف (SDK کانکتور)

از سازنده‌ی pushItems برای ارسال آیتم‌ها استفاده کنید. SDK به طور خودکار آیتم‌ها را با استفاده از متد getDoc کلاس Repository و به ترتیب اولویت از صف دریافت می‌کند.

عملیات صف (REST API)

  • برای ارسال: از Items.push استفاده کنید.
  • برای نظرسنجی: از Items.poll استفاده کنید.

همچنین می‌توانید Items.index برای ارسال آیتم‌ها در طول ایندکس‌گذاری استفاده کنید. این آیتم‌ها به طور خودکار وضعیت ACCEPTED را دریافت می‌کنند.

آیتم‌ها.push

این متد، شناسه‌ها را به صف اضافه می‌کند. type نتیجه را تعیین می‌کند. وارد کردن یک شناسه جدید، ورودی با وضعیت NEW_ITEM را اضافه می‌کند. مقدار اختیاری payload در طول نظرسنجی برمی‌گردد.

آیتم‌های انتخاب‌شده رزرو شده‌اند و نمی‌توانند توسط سایر فراخوانی‌های نظرسنجی بازگردانده شوند. استفاده از Items.push با type تنظیم‌شده روی NOT_MODIFIED ، REPOSITORY_ERROR یا REQUEUE ورودی‌ها را از حالت رزرو خارج می‌کند .

Items.push با هش‌ها

در درخواست ارسال، هش‌های فراداده یا محتوا را مشخص کنید. جستجوی ابری این موارد را با مقادیر ذخیره شده مقایسه می‌کند. در صورت عدم تطابق، ورودی به MODIFIED تبدیل می‌شود. شناسه‌های نامتناسبی که وجود ندارند به NEW_ITEM تبدیل می‌شوند.

آیتم‌ها.نظرسنجی

این متد ورودی‌های با اولویت بالا را بازیابی می‌کند. هر ورودی برگردانده شده تا زمانی که مهلت آن تمام شود، دوباره فهرست‌بندی شود یا با استفاده از Items.push رزرو نشده باشد، رزرو شده باقی می‌ماند.