תורי ההוספה לאינדקס של Google Cloud Search

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
איור 1. שלבי הוספה לאינדקס להוספה או לעדכון של פריט
  1. מחבר התוכן משתמש items.push כדי לדחוף פריטים (מטא-נתונים וגיבובים) לתור ההוספה לאינדקס כדי לקבוע את סטטוס (MODIFIED, NEW_ITEM, DELETED). ספציפית:

    • בזמן הדחיפה, המחבר כולל באופן מפורש type או contentHash.
    • אם המחבר לא כולל את type, אז Cloud Search עושה שימוש אוטומטי בcontentHash כדי לקבוע את סטטוס הפריט.
    • אם הפריט לא ידוע, סטטוס הפריט מוגדר כ-NEW_ITEM.
    • אם הפריט קיים וערכי הגיבוב תואמים, הסטטוס יישמר כ-ACCEPTED.
    • אם הפריט קיים והגיבובים שונים, הסטטוס יהפוך לMODIFIED.

    כדי לקבל מידע נוסף על קביעת סטטוס הפריט, אפשר לעיין שימוש במאגרים של GitHub בקוד לדוגמה מדריך לתחילת העבודה עם Cloud Search.

    בדרך כלל, הדחיפה קשורה למעבר תוכן ו/או לזיהוי שינויים במחבר.

  2. מחבר התוכן משתמש items.poll כדי לבדוק את התור לקבוע את הפריטים להוספה לאינדקס. Cloud Search מסמן למחבר אילו פריטים הכי זקוקים להוספה לאינדקס, ממוינים קודם לפי קוד סטטוס ולאחר מכן לפי זמן בתור.

  3. המחבר מאחזר את הפריטים האלה מהמאגר ויוצר את האינדקס בקשות API.

  4. המחבר משתמש items.index כדי להוסיף את הפריטים לאינדקס. הפריט נכנס למצב ACCEPTED רק אחרי Cloud Search מסיים בהצלחה את עיבוד הפריט.

מחבר יכול גם למחוק פריט אם הוא כבר לא קיים במאגר, או לדחוף פריט שוב אם הוא לא השתנה או אם יש מאגר המקור. מידע נוסף על מחיקות של פריטים זמין במאמרים הבאים .

סקירה כללית של השימוש בתורי הוספה לאינדקס למחיקת פריט

אסטרטגיית מעבר מלא משתמש בתהליך של שני תורים כדי להוסיף פריטים לאינדקס ולזהות מחיקות. באיור 2 מוצגים השלבים למחיקת פריט שכוללים תורי הוספה לאינדקס. באופן ספציפי, איור 2 מציג את המעבר השני שבוצעה באמצעות אסטרטגיית מעבר מלא. השלבים האלה משתמשים בקריאות API ל-REST. עבור קריאות מקבילות ל-SDK, ניתן לעיין במאמר פעולות בתור (Connector SDK).

סקירה כללית של הוספה לאינדקס ב-Google Cloud Search
איור 2. מוחקים פריטים
  1. במעבר הראשוני, מחבר התוכן משתמש items.push כדי לדחוף פריטים (מטא-נתונים וגיבובים) לתור ההוספה לאינדקס, 'תור A' בתור NEW_ITEM כי הוא לא קיים בתור. לכל פריט מוקצית תווית א' בתור 'הבאים בתור'. התוכן נוסף לאינדקס ל-Cloud Search.

  2. מחבר התוכן משתמש items.poll כדי לבדוק את תור A כדי לקבוע את הפריטים להוספה לאינדקס. Cloud Search מסמן למחבר אילו פריטים הכי זקוקים להוספה לאינדקס, ממוינים קודם לפי קוד סטטוס ולאחר מכן לפי זמן בתור.

  3. המחבר מאחזר את הפריטים האלה מהמאגר ויוצר את האינדקס בקשות API.

  4. המחבר משתמש items.index כדי להוסיף את הפריטים לאינדקס. הפריט נכנס למצב ACCEPTED רק אחרי Cloud Search מסיים בהצלחה את עיבוד הפריט.

  5. deleteQueueItems נקראת 'תור ב'. אבל אף פריט לא הועבר לתור ב', לכן אי אפשר למחוק שום דבר.

  6. במעבר המלא השני, מחבר התוכן משתמש items.push כדי לדחוף פריטים (מטא-נתונים וגיבוב) לתור B:

    • בזמן הדחיפה, המחבר כולל באופן מפורש type או contentHash.
    • אם המחבר לא כולל את type, אז Cloud Search עושה שימוש אוטומטי בcontentHash כדי לקבוע את סטטוס הפריט.
    • אם הפריט לא ידוע, סטטוס הפריט מוגדר בתור NEW_ITEM ובתור 'הבאים בתור' התווית השתנתה ל-B.
    • אם הפריט קיים וערכי הגיבוב תואמים, הסטטוס יישמר כ-ACCEPTED והתווית של התור תשתנה ל-'B'.
    • אם הפריט קיים והגיבובים שונים, הסטטוס יהפוך לMODIFIED והתור התווית השתנתה ל-B.
  7. מחבר התוכן משתמש items.poll כדי לבדוק את התור לקבוע את הפריטים להוספה לאינדקס. Cloud Search מסמן למחבר אילו פריטים הכי זקוקים להוספה לאינדקס, ממוינים קודם לפי קוד סטטוס ולאחר מכן לפי זמן בתור.

  8. המחבר מאחזר את הפריטים האלה מהמאגר ויוצר את האינדקס בקשות API.

  9. המחבר משתמש items.index כדי להוסיף את הפריטים לאינדקס. הפריט נכנס למצב ACCEPTED רק אחרי Cloud Search מסיים בהצלחה את עיבוד הפריט.

  10. לבסוף, deleteQueueItems מופעלת בתור A כדי למחוק את כל פריטי החיפוש ב-CCloud Search שנוספו לאינדקס עדיין יש תור "A" התיוג.

  11. עם המעברים המלאים הבאים, התור שמשמש להוספה לאינדקס והתור שמשמש למחיקה יוחלף.

פעולות בתור (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.