Connector SDK ו-Google Cloud Search API מאפשרים ליצור Cloud Search תורים להוספה לאינדקס שמשמשים לביצוע המשימות הבאות:
לשמור על המצב של כל מסמך (סטטוס, ערכי גיבוב (hash) וכן הלאה) שעשוי להיות משמש לשמירה על הסנכרון של האינדקס עם המאגר שלכם.
לנהל רשימה של פריטים להוספה לאינדקס כפי שהתגלו במהלך המעבר תהליך האימות.
ניתן לתת עדיפות לפריטים בתור לפי סטטוס הפריט.
לשמור מידע נוסף על המצב לצורך שילוב יעיל כמו נקודות ביקורת, שינוי אסימון וכן הלאה.
'הבאים בתור' הוא תווית שהוקצתה לפריט שנוסף לאינדקס, כמו 'ברירת מחדל' עבור 'הבאים בתור' שמוגדר כברירת מחדל בתור B.
סטטוס ו עדיפות
העדיפות של מסמך בתור מבוססת על
ItemStatus
האפשרויות הבאות הן
ItemStatus
קודים לפי סדר עדיפות (מטופל מהראשון עד האחרון):
ERROR
– הפריט נתקל בשגיאה אסינכרונית במהלך ההוספה לאינדקס וצריך להוסיף אותם לאינדקס מחדש.MODIFIED
– פריט שנוסף לאינדקס בעבר ושונה מאז ב- למאגר מאז ההוספה האחרונה לאינדקס.NEW_ITEM
– פריט שלא נוסף לאינדקס.ACCEPTED
– מסמך שכבר נוסף לאינדקס ולא השתנה ב מאז ההוספה האחרונה לאינדקס.
כאשר לשני פריטים בתור יש סטטוס זהה, ניתנת עדיפות גבוהה יותר לפריט פריטים שהיו בתור למשך הזמן הארוך ביותר.
סקירה כללית של השימוש בתורים להוספה לאינדקס כדי להוסיף לאינדקס פריט חדש או פריט שהשתנה
באיור 1 מוצגים השלבים להוספה לאינדקס של פריט חדש או שהשתנה באמצעות הוספה לאינדקס לרשימת 'הבאים בתור'. בשלבים האלה מוצגות קריאות ל-API ל-REST. לקריאות מקבילות ל-SDK, ניתן לעיין במאמר פעולות בתור (Connector SDK).
![סקירה כללית של הוספה לאינדקס ב-Google Cloud Search](https://google-developers.gonglchuangl.net/static/cloud-search/images/architecture-queues-add.png?authuser=0&hl=he)
מחבר התוכן משתמש
items.push
כדי לדחוף פריטים (מטא-נתונים וגיבובים) לתור ההוספה לאינדקס כדי לקבוע את סטטוס (MODIFIED
,NEW_ITEM
,DELETED
). ספציפית:- בזמן הדחיפה, המחבר כולל באופן מפורש
type
אוcontentHash
. - אם המחבר לא כולל את
type
, אז Cloud Search עושה שימוש אוטומטי בcontentHash
כדי לקבוע את סטטוס הפריט. - אם הפריט לא ידוע, סטטוס הפריט מוגדר כ-
NEW_ITEM
. - אם הפריט קיים וערכי הגיבוב תואמים, הסטטוס יישמר כ-
ACCEPTED
. - אם הפריט קיים והגיבובים שונים, הסטטוס יהפוך ל
MODIFIED
.
כדי לקבל מידע נוסף על קביעת סטטוס הפריט, אפשר לעיין שימוש במאגרים של GitHub בקוד לדוגמה מדריך לתחילת העבודה עם Cloud Search.
בדרך כלל, הדחיפה קשורה למעבר תוכן ו/או לזיהוי שינויים במחבר.
- בזמן הדחיפה, המחבר כולל באופן מפורש
מחבר התוכן משתמש
items.poll
כדי לבדוק את התור לקבוע את הפריטים להוספה לאינדקס. Cloud Search מסמן למחבר אילו פריטים הכי זקוקים להוספה לאינדקס, ממוינים קודם לפי קוד סטטוס ולאחר מכן לפי זמן בתור.המחבר מאחזר את הפריטים האלה מהמאגר ויוצר את האינדקס בקשות API.
המחבר משתמש
items.index
כדי להוסיף את הפריטים לאינדקס. הפריט נכנס למצבACCEPTED
רק אחרי Cloud Search מסיים בהצלחה את עיבוד הפריט.
מחבר יכול גם למחוק פריט אם הוא כבר לא קיים במאגר, או לדחוף פריט שוב אם הוא לא השתנה או אם יש מאגר המקור. מידע נוסף על מחיקות של פריטים זמין במאמרים הבאים .
סקירה כללית של השימוש בתורי הוספה לאינדקס למחיקת פריט
אסטרטגיית מעבר מלא משתמש בתהליך של שני תורים כדי להוסיף פריטים לאינדקס ולזהות מחיקות. באיור 2 מוצגים השלבים למחיקת פריט שכוללים תורי הוספה לאינדקס. באופן ספציפי, איור 2 מציג את המעבר השני שבוצעה באמצעות אסטרטגיית מעבר מלא. השלבים האלה משתמשים בקריאות API ל-REST. עבור קריאות מקבילות ל-SDK, ניתן לעיין במאמר פעולות בתור (Connector SDK).
![סקירה כללית של הוספה לאינדקס ב-Google Cloud Search](https://google-developers.gonglchuangl.net/static/cloud-search/images/architecture-queues-delete.png?authuser=0&hl=he)
במעבר הראשוני, מחבר התוכן משתמש
items.push
כדי לדחוף פריטים (מטא-נתונים וגיבובים) לתור ההוספה לאינדקס, 'תור A' בתורNEW_ITEM
כי הוא לא קיים בתור. לכל פריט מוקצית תווית א' בתור 'הבאים בתור'. התוכן נוסף לאינדקס ל-Cloud Search.מחבר התוכן משתמש
items.poll
כדי לבדוק את תור A כדי לקבוע את הפריטים להוספה לאינדקס. Cloud Search מסמן למחבר אילו פריטים הכי זקוקים להוספה לאינדקס, ממוינים קודם לפי קוד סטטוס ולאחר מכן לפי זמן בתור.המחבר מאחזר את הפריטים האלה מהמאגר ויוצר את האינדקס בקשות API.
המחבר משתמש
items.index
כדי להוסיף את הפריטים לאינדקס. הפריט נכנס למצבACCEPTED
רק אחרי Cloud Search מסיים בהצלחה את עיבוד הפריט.deleteQueueItems
נקראת 'תור ב'. אבל אף פריט לא הועבר לתור ב', לכן אי אפשר למחוק שום דבר.במעבר המלא השני, מחבר התוכן משתמש
items.push
כדי לדחוף פריטים (מטא-נתונים וגיבוב) לתור B:- בזמן הדחיפה, המחבר כולל באופן מפורש
type
אוcontentHash
. - אם המחבר לא כולל את
type
, אז Cloud Search עושה שימוש אוטומטי בcontentHash
כדי לקבוע את סטטוס הפריט. - אם הפריט לא ידוע, סטטוס הפריט מוגדר בתור
NEW_ITEM
ובתור 'הבאים בתור' התווית השתנתה ל-B. - אם הפריט קיים וערכי הגיבוב תואמים, הסטטוס יישמר כ-
ACCEPTED
והתווית של התור תשתנה ל-'B'. - אם הפריט קיים והגיבובים שונים, הסטטוס יהפוך ל
MODIFIED
והתור התווית השתנתה ל-B.
- בזמן הדחיפה, המחבר כולל באופן מפורש
מחבר התוכן משתמש
items.poll
כדי לבדוק את התור לקבוע את הפריטים להוספה לאינדקס. Cloud Search מסמן למחבר אילו פריטים הכי זקוקים להוספה לאינדקס, ממוינים קודם לפי קוד סטטוס ולאחר מכן לפי זמן בתור.המחבר מאחזר את הפריטים האלה מהמאגר ויוצר את האינדקס בקשות API.
המחבר משתמש
items.index
כדי להוסיף את הפריטים לאינדקס. הפריט נכנס למצבACCEPTED
רק אחרי Cloud Search מסיים בהצלחה את עיבוד הפריט.לבסוף,
deleteQueueItems
מופעלת בתור A כדי למחוק את כל פריטי החיפוש ב-CCloud Search שנוספו לאינדקס עדיין יש תור "A" התיוג.עם המעברים המלאים הבאים, התור שמשמש להוספה לאינדקס והתור שמשמש למחיקה יוחלף.
פעולות בתור (Connector SDK)
ה-SDK של מחבר התוכן מספק פעולות לדחיפה ולמשיכה של פריטים פריטים מ-, בתור.
כדי לארוז פריט ולהעביר אותו לתור, משתמשים בpushItems
ל-builder.
לא צריך לבצע פעולה ספציפית כדי למשוך פריטים מ'הבאים בתור'
בעיבוד. במקום זאת, ערכת ה-SDK מאחזרת באופן אוטומטי פריטים מהתור, בעדיפות
לפי הסדר, באמצעות
של המחלקה Repository
getDoc
.
פעולות בתור (API ל-REST)
ב-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
,
ערכי הגיבוב של המטא-נתונים או התוכן
ניתן לציין זאת באמצעות בקשת דחיפה. השוואה בין 'הבאים בתור' לאינדקס ב-Cloud Search
את ערכי הגיבוב שסופקו עם הערכים המאוחסנים שזמינים עם הפריט
מקור הנתונים. אם יש אי התאמה, הרשומה הזו תסומן כ-MODIFIED
. אם מתקבלת התאמה
הפריט לא קיים באינדקס, אז הסטטוס הוא NEW_ITEM
.
Items.poll
Items.poll method מאחזרת את הרשומות עם העדיפות הגבוהה ביותר מהתור. התוכן המבוקש ערכי סטטוס שהוחזרו מציינים את הסטטוסים של תורי העדיפות המבוקשים או הסטטוס של המזהים שהוחזרו.
כברירת מחדל, ניתן להחזיר ערכים מכל קטע בתור, בהתאם
בעדיפות גבוהה. כל ערך שהוחזר שמור ולא מוחזר על ידי אחר
שיחות אל
Items.poll
עד שמתקיים אחד מהתנאים הבאים:
- פג הזמן הקצוב של ההזמנה.
- הרשומה תוכנס שוב לתור על ידי
Items.index
. Items.push
נקרא באמצעותtype
שלNOT_MODIFIED
,REPOSITORY_ERROR
אוREQUEUE
.