Connector SDK و Google Cloud Search API امکان ایجاد صفهای نمایهسازی Cloud Search را میدهد که برای انجام وظایف زیر استفاده میشوند:
وضعیت هر سند (وضعیت، مقادیر هش و غیره) را حفظ کنید که می تواند برای همگام نگه داشتن فهرست شما با مخزن شما استفاده شود.
فهرستی از مواردی که در طول فرآیند پیمایش کشف می شوند، فهرست بندی شوند.
اولویت بندی اقلام در صف بر اساس وضعیت آیتم.
اطلاعات وضعیت اضافی را برای یکپارچه سازی کارآمد مانند پست های بازرسی، تغییر رمز و غیره حفظ کنید.
صف برچسبی است که به یک آیتم نمایه شده اختصاص داده می شود، مانند "پیش فرض" برای صف پیش فرض یا "B" برای صف B.
وضعیت و اولویت
اولویت یک سند در یک صف بر اساس کد ItemStatus
آن است. کدهای ItemStatus
احتمالی به ترتیب اولویت در زیر آمده است (اول تا آخر رسیدگی می شود):
ERROR
- مورد در طول فرآیند نمایه سازی با خطای ناهمزمان مواجه شد و باید دوباره نمایه شود.MODIFIED
- موردی که قبلا ایندکس شده بود و از زمان آخرین نمایه سازی در مخزن اصلاح شده است.NEW_ITEM
- موردی که نمایه نشده است.ACCEPTED
- سندی که قبلاً نمایه شده است و از آخرین نمایه سازی در مخزن تغییر نکرده است.
هنگامی که دو آیتم در یک صف دارای وضعیت یکسانی باشند، اولویت بیشتری به مواردی داده می شود که برای طولانی ترین مدت در صف بوده اند.
مروری بر استفاده از صف های نمایه سازی برای نمایه سازی یک آیتم جدید یا تغییر یافته
شکل 1 مراحل نمایه سازی یک آیتم جدید یا تغییر یافته را با استفاده از یک صف نمایه سازی نشان می دهد. این مراحل تماس های REST API را نشان می دهد. برای تماسهای SDK معادل، به عملیات صف (کانکتور SDK) مراجعه کنید.
رابط محتوا از
items.push
برای فشار دادن موارد (فراداده و هش) به صف فهرستسازی استفاده میکند تا وضعیت مورد را مشخص کند (MODIFIED
،NEW_ITEM
،DELETED
). به طور مشخص:- هنگام فشار دادن، رابط به صراحت شامل یک
type
فشار یاcontentHash
است. - اگر رابط شامل
type
نباشد، Cloud Search به طور خودکار ازcontentHash
برای تعیین وضعیت مورد استفاده می کند. - اگر مورد ناشناخته باشد، وضعیت مورد روی
NEW_ITEM
تنظیم می شود. - اگر مورد وجود داشته باشد و مقادیر هش مطابقت داشته باشد، وضعیت به عنوان
ACCEPTED
حفظ می شود. - اگر مورد وجود داشته باشد و هش ها متفاوت باشد، وضعیت
MODIFIED
است.
برای کسب اطلاعات بیشتر در مورد چگونگی تعیین وضعیت آیتم، به کد نمونه کد مخازن GitHub در آموزش شروع جستجوی Cloud مراجعه کنید.
معمولاً، فشار با پیمایش محتوا و/یا فرآیندهای تشخیص تغییر در کانکتور مرتبط است.
- هنگام فشار دادن، رابط به صراحت شامل یک
رابط محتوا از
items.poll
برای نظرسنجی صف برای تعیین موارد برای فهرست استفاده می کند. Cloud Search به رابط میگوید کدام موارد بیشتر به فهرستبندی نیاز دارند، ابتدا بر اساس کد وضعیت و سپس بر اساس زمان در صف مرتبسازی شدهاند.کانکتور این موارد را از مخزن بازیابی می کند و درخواست های API شاخص را ایجاد می کند.
رابط از
items.index
برای نمایه سازی آیتم ها استفاده می کند. مورد فقط پس از اینکه Cloud Search با موفقیت پردازش مورد را به پایان رساند، وارد وضعیتACCEPTED
می شود.
یک رابط همچنین میتواند یک مورد را در صورتی که دیگر در مخزن وجود نداشته باشد حذف کند، یا اگر موردی را تغییر نداده یا اگر یک خطای مخزن منبع وجود داشته باشد، دوباره آن را فشار دهد. برای اطلاعات در مورد حذف موارد، بخش بعدی را ببینید.
مروری بر استفاده از صف های نمایه سازی برای حذف یک مورد
استراتژی پیمایش کامل از یک فرآیند دو صف برای فهرست بندی اقلام و شناسایی حذف ها استفاده می کند. شکل 2 مراحل حذف یک آیتم را با استفاده از دو صف نمایه سازی نشان می دهد. به طور خاص، شکل 2 پیمایش دوم را نشان می دهد که با استفاده از یک استراتژی پیمایش کامل انجام شده است. این مراحل از تماسهای REST API استفاده میکنند. برای تماسهای SDK معادل، به عملیات صف (کانکتور SDK) مراجعه کنید.
در پیمایش اولیه، رابط محتوا از
items.push
استفاده میکند تا آیتمها (فراداده و هش) را به یک صف نمایهسازی فشار دهد، «صف A» به عنوانNEW_ITEM
چون در صف وجود ندارد. به هر مورد برچسب "A" برای "صف A" اختصاص داده شده است. محتوا در جستجوی ابری نمایه می شود.رابط محتوا از
items.poll
برای نظرسنجی صف A برای تعیین آیتمها برای فهرستبندی استفاده میکند. Cloud Search به رابط میگوید کدام موارد بیشتر به فهرستبندی نیاز دارند، ابتدا بر اساس کد وضعیت و سپس بر اساس زمان در صف مرتبسازی شدهاند.کانکتور این موارد را از مخزن بازیابی می کند و درخواست های API شاخص را ایجاد می کند.
رابط از
items.index
برای نمایه سازی آیتم ها استفاده می کند. مورد فقط پس از اینکه Cloud Search با موفقیت پردازش مورد را به پایان رساند، وارد وضعیتACCEPTED
می شود.متد
deleteQueueItems
در "صف B" فراخوانی می شود. اما، هیچ موردی به صف B فشار داده نشده است، بنابراین هیچ چیزی نمی تواند حذف شود.در دومین پیمایش کامل، رابط محتوا از
items.push
استفاده میکند تا آیتمها (فراداده و هش) را در صف B قرار دهد:- هنگام فشار دادن، رابط به صراحت شامل یک
type
فشار یاcontentHash
است. - اگر رابط شامل
type
نباشد، Cloud Search به طور خودکار ازcontentHash
برای تعیین وضعیت مورد استفاده می کند. - اگر مورد ناشناخته باشد، وضعیت مورد روی
NEW_ITEM
تنظیم می شود و برچسب صف به "B" تغییر می کند. - اگر مورد وجود داشته باشد و مقادیر هش مطابقت داشته باشد، وضعیت به عنوان
ACCEPTED
حفظ می شود و برچسب صف به "B" تغییر می کند. - اگر مورد وجود داشته باشد و هش ها متفاوت باشد، وضعیت
MODIFIED
می شود و برچسب صف به "B" تغییر می کند.
- هنگام فشار دادن، رابط به صراحت شامل یک
رابط محتوا از
items.poll
برای نظرسنجی صف برای تعیین موارد برای فهرست استفاده می کند. Cloud Search به رابط میگوید کدام موارد بیشتر به فهرستبندی نیاز دارند، ابتدا بر اساس کد وضعیت و سپس بر اساس زمان در صف مرتبسازی شدهاند.کانکتور این موارد را از مخزن بازیابی می کند و درخواست های API شاخص را ایجاد می کند.
رابط از
items.index
برای نمایه سازی آیتم ها استفاده می کند. مورد فقط پس از اینکه Cloud Search با موفقیت پردازش مورد را به پایان رساند، وارد وضعیتACCEPTED
می شود.در نهایت،
deleteQueueItems
در صف A فراخوانی میشود تا تمام موارد CCloud Search که قبلاً فهرستبندی شدهاند و همچنان دارای برچسب «A» در صف هستند، حذف شود.با پیمایش کامل بعدی، صف مورد استفاده برای نمایه سازی و صف مورد استفاده برای حذف تعویض می شوند.
عملیات صف (کانکتور SDK)
Content Connector SDK عملیاتی را برای فشار دادن آیتم ها به صف و کشیدن آیتم ها از آن ارائه می کند.
برای بسته بندی و فشار دادن یک آیتم به صف، از کلاس سازنده pushItems
استفاده کنید.
برای بیرون کشیدن اقلام از صف برای پردازش، نیازی به انجام کار خاصی ندارید. در عوض، SDK بهطور خودکار آیتمها را به ترتیب اولویت، با استفاده از متد getDoc
کلاس Repository از صف بیرون میکشد.
عملیات صف (REST API)
REST API دو روش زیر را برای فشار دادن آیتم ها به یک صف و بیرون کشیدن آیتم ها از صف ارائه می دهد:
- برای فشار دادن یک مورد به صف، از
Items.push
استفاده کنید. - برای نظرسنجی موارد در صف، از
Items.poll
استفاده کنید.
همچنین می توانید از Items.index
برای فشار دادن آیتم ها به صف در طول نمایه سازی استفاده کنید. مواردی که در طول نمایه سازی به صف فشار داده می شوند نیازی به type
ندارند و به طور خودکار وضعیت ACCEPTED
به آنها اختصاص داده می شود.
Items.push
متد Items.push
شناسه ها را به صف اضافه می کند. این روش را می توان با یک type
خاص فراخوانی کرد که نتیجه عملیات فشار را تعیین می کند. برای لیستی از مقادیر type
، به فیلد item.type
در روش Items.push مراجعه کنید.
با فشار دادن یک شناسه جدید، یک ورودی جدید با کد NEW_ITEM
ItemStatus
اضافه میشود.
محموله اختیاری همیشه ذخیره می شود، به عنوان یک مقدار مات در نظر گرفته می شود و از Items.poll
بازگردانده می شود.
هنگامی که یک مورد نظرسنجی می شود، رزرو می شود به این معنی که نمی توان آن را با تماس دیگری به Items.poll
برگرداند. استفاده از Items.push
با type
NOT_MODIFIED
، REPOSITORY_ERROR
، یا REQUEUE
، ورودی های نظرسنجی را لغو می کند . برای اطلاعات بیشتر در مورد ورودی های رزرو شده و رزرو نشده، به بخش Items.poll مراجعه کنید.
Items.push
با هش
Google Cloud Search API از تعیین مقادیر متادیتا و هش محتوا در درخواستهای Items.index
پشتیبانی میکند. به جای مشخص کردن type
، می توان مقادیر متادیتا و/یا هش محتوا را با یک درخواست فشار مشخص کرد. صف فهرست بندی Cloud Search مقادیر هش ارائه شده را با مقادیر ذخیره شده موجود با مورد در منبع داده مقایسه می کند. در صورت عدم تطابق، آن ورودی به عنوان MODIFIED
علامت گذاری می شود. اگر مورد مربوطه در فهرست وجود نداشته باشد، وضعیت NEW_ITEM
است.
Items.poll
متد Items.poll ورودی های با بالاترین اولویت را از صف بازیابی می کند. مقادیر وضعیت درخواستی و برگشتی نشان دهنده وضعیت(های) صف(های) اولویت درخواستی یا وضعیت شناسه های برگشتی است.
به طور پیش فرض، ورودی های هر بخش از صف ممکن است بر اساس اولویت بازگردانده شوند. هر ورودی برگشتی رزرو شده است و تا زمانی که یکی از موارد زیر برآورده نشود، با تماس های دیگر به Items.poll
بازگردانده نمی شود:
- زمان رزرو به پایان می رسد.
- ورودی دوباره توسط
Items.index
در صف قرار می گیرد. -
Items.push
با مقدارtype
NOT_MODIFIED
،REPOSITORY_ERROR
یاREQUEUE
فراخوانی می شود.