Connector SDK ו-Google Cloud Search API מאפשרים ליצור תורים לאינדוקס ב-Cloud Search, שמשמשים לביצוע המשימות הבאות:
לשמור על המצב של כל מסמך (סטטוס, ערכי hash וכו'), שאפשר להשתמש בו כדי לשמור על סנכרון האינדקס עם המאגר.
שומרים רשימה של פריטים שיש לאנדקס כפי שהתגלו במהלך תהליך הסריקה.
לתעדף פריטים בתורים לפי הסטטוס שלהם.
לתחזק מידע נוסף על מצב השילוב כדי שהוא יהיה יעיל, כמו נקודות ביקורת, אסימון שינוי וכו'.
תור הוא תווית שמוקצית לפריט שעבר אינדוקס, כמו 'default' לתור ברירת המחדל או 'B' לתור B.
סטטוס ועדיפות
העדיפות של מסמך בתור מבוססת על קוד ItemStatus
. אלה קודי ItemStatus
האפשריים לפי סדר העדיפות (מהטיפול הראשון ועד האחרון):
ERROR
– הפריט נתקל בשגיאה אסינכרונית במהלך תהליך היצירה של האינדקס, וצריך ליצור לו אינדקס מחדש.
MODIFIED
– פריט שעבר אינדוקס בעבר, ומאז עבר שינוי במאגר מאז האינדוקס האחרון.
NEW_ITEM
– פריט שלא נכלל באינדקס.
ACCEPTED
– מסמך שעבר אינדוקס בעבר ולא השתנה במאגר מאז האינדוקס האחרון.
אם לשני פריטים בתור יש את אותו סטטוס, תינתן עדיפות גבוהה יותר לפריטים שנמצאים בתור הכי הרבה זמן.
סקירה כללית על שימוש בתורים של הוספה לאינדקס כדי להוסיף לאינדקס פריט חדש או פריט שבוצעו בו שינויים
איור 1 מציג את השלבים באינדוקס של פריט חדש או פריט שהשתנה באמצעות תור אינדוקס. בשלבים הבאים מוצגות קריאות ל-API בארכיטקטורת REST. למידע על קריאות שוות-ערך ל-SDK, אפשר לעיין במאמר בנושא פעולות בתור (Connector SDK).

מחבר התוכן משתמש ב-
items.push
כדי להעביר פריטים (מטא-נתונים וגיבוב) לתור של יצירת אינדקס, כדי לקבוע את הסטטוס של הפריט (MODIFIED
,NEW_ITEM
,DELETED
). באופן ספציפי:- כשמבצעים פעולת דחיפה, המחבר כולל באופן מפורש דחיפה
type
אוcontentHash
. - אם המחבר לא כולל את
type
, Cloud Search משתמש אוטומטית ב-contentHash
כדי לקבוע את הסטטוס של הפריט. - אם הפריט לא מוכר, סטטוס הפריט מוגדר כ
NEW_ITEM
. - אם הפריט קיים וערכי הגיבוב (hash) זהים, הסטטוס נשאר
ACCEPTED
. - אם הפריט קיים והגיבובים שונים, הסטטוס יהיה
MODIFIED
.
מידע נוסף על קביעת הסטטוס של פריט אפשר למצוא בדוגמת הקוד Traversing the GitHub repositories במדריך תחילת העבודה עם Cloud Search.
בדרך כלל, הפעולה הזו משויכת לתהליכים של מעבר על תוכן ו/או זיהוי שינויים במחבר.
- כשמבצעים פעולת דחיפה, המחבר כולל באופן מפורש דחיפה
מחבר התוכן משתמש ב-
items.poll
כדי לבצע סקר של התור ולקבוע אילו פריטים יתווספו לאינדקס. Cloud Search אומר למחבר אילו פריטים הכי זקוקים לאינדוקס, והם ממוינים קודם לפי קוד סטטוס ואז לפי זמן ההמתנה בתור.המחבר מאחזר את הפריטים האלה מהמאגר ויוצר בקשות API של אינדקס.
המחבר משתמש ב-
items.index
כדי ליצור אינדקס לפריטים. הפריט עובר למצבACCEPTED
רק אחרי ש-Cloud Search מסיים לעבד אותו בהצלחה.
מחבר יכול גם למחוק פריט אם הוא כבר לא קיים במאגר, או לשלוח פריט שוב אם הוא לא השתנה או אם יש שגיאה במאגר המקור. בקטע הבא יש מידע על מחיקת פריטים.
סקירה כללית על שימוש בתורים של הוספה לאינדקס כדי למחוק פריט
אסטרטגיית הסריקה המלאה משתמשת בתהליך עם שני תורים כדי ליצור אינדקס של פריטים ולזהות מחיקות. איור 2 מציג את השלבים במחיקת פריט באמצעות שני תורים של יצירת אינדקס. באיור 2 מוצג המעבר השני שבוצע באמצעות אסטרטגיית מעבר מלא. השלבים האלה משתמשים בקריאות ל-API ל-REST. למידע על קריאות SDK מקבילות, אפשר לעיין במאמר פעולות בתור (Connector SDK).

במעבר הראשוני, מחבר התוכן משתמש ב-
items.push
כדי להעביר פריטים (מטא-נתונים וגיבוב) לתור האינדוקס, 'תור א', בתורNEW_ITEM
כי הוא לא קיים בתור. לכל פריט מוקצית התווית A לציון תור A. התוכן מתווסף לאינדקס ב-Cloud Search.מחבר התוכן משתמש ב-
items.poll
כדי לבצע שאילתות ב-queue A ולקבוע אילו פריטים יתווספו לאינדקס. Cloud Search אומר למחבר אילו פריטים הכי זקוקים לאינדוקס, והם ממוינים קודם לפי קוד סטטוס ואז לפי זמן ההמתנה בתור.המחבר מאחזר את הפריטים האלה מהמאגר ויוצר בקשות API של אינדקס.
המחבר משתמש ב-
items.index
כדי ליצור אינדקס לפריטים. הפריט עובר למצבACCEPTED
רק אחרי ש-Cloud Search מסיים לעבד אותו בהצלחה.השיטה
deleteQueueItems
מופעלת בתור B. אבל לא הועברו פריטים לתור B, ולכן לא ניתן למחוק כלום.במעבר המלא השני, מחבר התוכן משתמש ב-
items.push
כדי להעביר פריטים (מטא-נתונים וגיבוב) לתור ב':- כשמבצעים פעולת דחיפה, המחבר כולל באופן מפורש דחיפה
type
אוcontentHash
. - אם המחבר לא כולל את
type
, Cloud Search משתמש אוטומטית ב-contentHash
כדי לקבוע את הסטטוס של הפריט. - אם הפריט לא מוכר, סטטוס הפריט מוגדר כ-
NEW_ITEM
ותווית התור משתנה ל-B. - אם הפריט קיים וערכי הגיבוב (hash) זהים, הסטטוס נשאר
ACCEPTED
והתווית של התור משתנה ל-B. - אם הפריט קיים והגיבובים שונים, הסטטוס הופך ל-
MODIFIED
והתווית של התור משתנה ל-B.
- כשמבצעים פעולת דחיפה, המחבר כולל באופן מפורש דחיפה
מחבר התוכן משתמש ב-
items.poll
כדי לבצע סקר של התור ולקבוע אילו פריטים יתווספו לאינדקס. Cloud Search אומר למחבר אילו פריטים הכי זקוקים לאינדוקס, והם ממוינים קודם לפי קוד סטטוס ואז לפי זמן ההמתנה בתור.המחבר מאחזר את הפריטים האלה מהמאגר ויוצר בקשות API של אינדקס.
המחבר משתמש ב-
items.index
כדי ליצור אינדקס לפריטים. הפריט עובר למצבACCEPTED
רק אחרי ש-Cloud Search מסיים לעבד אותו בהצלחה.לבסוף, הפונקציה
deleteQueueItems
נקראת בתור A כדי למחוק את כל הפריטים שסומנו בתווית 'A' ב-Cloud Search ועברו אינדוקס בעבר.במעברים מלאים עוקבים, התור שמשמש לאינדוקס והתור שמשמש למחיקה מתחלפים.
פעולות בתור (Connector SDK)
ה-SDK של Content Connector מספק פעולות לדחיפת פריטים לתור ולשליפת פריטים מהתור.
כדי לארוז פריט ולהעביר אותו לתור, משתמשים במחלקה pushItems
builder.
לא צריך לבצע פעולות ספציפיות כדי לשלוף פריטים מתור לעיבוד. במקום זאת, ה-SDK שולף פריטים מהתור באופן אוטומטי, לפי סדר העדיפות, באמצעות השיטה getDoc
של המחלקה Repository.
פעולות בתור (REST API)
ה-API ל-REST מספק את שתי השיטות הבאות להעברת פריטים לתור ולשליפת פריטים מהתור:
- כדי להעביר פריט לתור, משתמשים ב-
Items.push
. - כדי לבדוק את הפריטים בתור, משתמשים ב-
Items.poll
.
אפשר גם להשתמש ב-Items.index
כדי להוסיף פריטים לתור במהלך יצירת האינדקס. פריטים שמועברים לתור במהלך יצירת האינדקס לא דורשים type
ומקבלים אוטומטית את הסטטוס ACCEPTED
.
Items.push
השיטה
Items.push
מוסיפה מזהים לתור. אפשר לקרוא לשיטה הזו עם ערך ספציפי של type
שקובע את התוצאה של פעולת הדחיפה. רשימה של ערכי type
מופיעה בשדה item.type
בשיטה Items.push.
הוספת מזהה חדש גורמת להוספת רשומה חדשה עם קוד NEW_ITEM
ItemStatus
.
המטען הייעודי (payload) האופציונלי תמיד נשמר, נחשב לערך אטום ומוחזר מ-Items.poll
.
כשמתבצעת שאילתה לגבי פריט, הוא מוזמן, כלומר אי אפשר להחזיר אותו על ידי קריאה אחרת אל Items.poll
.
שימוש ב-Items.push
עם type
בתור NOT_MODIFIED
, REPOSITORY_ERROR
או REQUEUE
, מבטל את השמירה של רשומות שנבדקו. מידע נוסף על רשומות שמורות ולא שמורות זמין בקטע Items.poll.
Items.push
עם גיבוב
Google Cloud Search API תומך בציון מטא-נתונים וערכי hash של תוכן בבקשות Items.index
. במקום לציין את type
, אפשר לציין את המטא-נתונים ו/או את ערכי הגיבוב של התוכן באמצעות בקשת push. תור האינדוקס של Cloud Search משווה את ערכי הגיבוב שסופקו לערכים המאוחסנים שזמינים לפריט במקור הנתונים. אם יש אי התאמה, הרשומה מסומנת בסטטוס MODIFIED
. אם אין פריט תואם באינדקס, הסטטוס הוא NEW_ITEM
.
Items.poll
השיטה Items.poll מאחזרת את הרשומות בעדיפות הכי גבוהה מהתור. ערכי הסטטוס שמתקבלים ומבוקשים מציינים את הסטטוס של תורי העדיפות שמתקבלים או את הסטטוס של המזהים שמתקבלים.
כברירת מחדל, יכול להיות שיוחזרו רשומות מכל קטע בתור, על סמך
העדיפות. כל רשומה שמוחזרת שמורה, ולא מוחזרת על ידי קריאות אחרות אל Items.poll
עד שאחד מהמקרים הבאים מתקיים:
- הזמן שהוקצב להזמנה פג.
- הערך מתווסף שוב לתור על ידי
Items.index
. - הפונקציה
Items.push
מופעלת עם ערךtype
שלNOT_MODIFIED
,REPOSITORY_ERROR
אוREQUEUE
.