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

ה-SDK של המחבר ו-Cloud Search API תומכים ביצירה של תורים של ניהול אינדקס ב-Cloud Search. אפשר להשתמש בתורים האלה כדי:

  • שמירה על מצב לכל מסמך (סטטוס, גיבובים וכו') כדי לשמור על סנכרון האינדקס.
  • שומרים רשימה של פריטים לאינדוקס, כפי שהתגלו במהלך הסריקה.
  • לתעדף פריטים לפי הסטטוס שלהם.
  • שמירה של פרטי מצב כמו נקודות ביקורת ואסימוני שינוי.

תור הוא תווית שמוקצית לפריט שעבר אינדוקס (למשל, 'ברירת מחדל').

סטטוס ועדיפות

העדיפות של מסמך תלויה בקוד ItemStatus שלו. הקודים האפשריים, לפי סדר עדיפות (מהגבוהה ביותר לנמוכה ביותר):

  • ERROR: הפריט נתקל בשגיאה אסינכרונית וצריך להוסיף אותו מחדש לאינדקס.
  • MODIFIED: הפריט נוסף לאינדקס בעבר, אבל השתנה במאגר.
  • NEW_ITEM: הפריט עדיין לא נוסף לאינדקס.
  • ACCEPTED: הפריט עבר אינדוקס בעבר ולא השתנה.

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

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

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

סקירה כללית של ניהול אינדקס ב-Cloud Search
איור 1. שלבים להוספה או לעדכון של פריט באינדקס
  1. מחבר התוכן משתמש ב-items.push כדי להעביר מטא-נתונים וגיבובים לתור.
    • אם המחבר כולל type או contentHash, סטטוס הדחיפה נקבע על ידי Cloud Search.
    • פריטים לא ידועים מקבלים את הסטטוס NEW_ITEM.
    • פריטים קיימים עם ערכי hash תואמים נשארים ACCEPTED.
    • פריטים קיימים עם ערכי גיבוב שונים הופכים לMODIFIED.
  2. המחבר משתמש ב-items.poll כדי לקבוע אילו פריטים להוסיף לאינדקס. ‫Cloud Search מחזיר פריטים לפי סדר עדיפות.
  3. המחבר מאחזר פריטים מהמאגר ויוצר בקשות ל-Index API.
  4. המחבר משתמש ב-items.index כדי ליצור אינדקס לפריטים. פריט עובר למצב ACCEPTED אחרי עיבוד מוצלח.

מחיקת פריט

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

סקירה כללית של ניהול אינדקס ב-Cloud Search
איור 2. מחיקת פריטים
  1. במעבר הראשוני, המחבר דוחף פריטים ל'תור א' בתור NEW_ITEM. כל פריט מקבל את התווית 'א'.
  2. המחבר שולח שאילתות ל-queue A ומבצע אינדוקס של הפריטים.
  3. במעבר המלא השני, המחבר מעביר פריטים ל'תור ב'.
    • פריטים לא ידועים מקבלים את התווית 'B' ואת הסטטוס NEW_ITEM.
    • פריטים קיימים עם ערכי hash תואמים משנים את התווית שלהם ל-B ונשארים ACCEPTED.
    • פריטים קיימים עם ערכי hash שונים משנים את התווית שלהם ל-B והופכים לMODIFIED.
  4. המחבר מבצע סקר על תור B ומבצע אינדוקס לפריטים.
  5. לבסוף, המחבר קורא ל-deleteQueueItems בתור A. כל הפריטים הקודמים שעדיין יש להם את התווית A יימחקו.
  6. במעברים הבאים, התפקידים של שני התורים מתחלפים.

פעולות בתור (Connector SDK)

משתמשים בכלי ליצירת pushItems כדי להעביר פריטים. ה-SDK שולף פריטים מהתור באופן אוטומטי לפי סדר העדיפות באמצעות השיטה getDoc של המחלקה Repository.

פעולות בתור (API בארכיטקטורת REST)

  • כדי לבצע push: משתמשים בפקודה Items.push.
  • כדי ליצור סקר, משתמשים בפקודה Items.poll.

אפשר גם להשתמש ב-Items.index כדי להעביר פריטים במהלך יצירת האינדקס. הפריטים האלה מקבלים את הסטטוס ACCEPTED באופן אוטומטי.

Items.push

השיטה הזו מוסיפה מזהים לתור. התוצאה נקבעת לפי type. העברת מזהה חדש מוסיפה רשומה עם סטטוס NEW_ITEM. המטען הייעודי (payload) האופציונלי מוחזר במהלך הסקר.

פריטים שנבחרו מוזמנים ואי אפשר להחזיר אותם באמצעות קריאות אחרות לסקר. שימוש ב-Items.push עם type שהוגדר ל-NOT_MODIFIED, ל-REPOSITORY_ERROR או ל-REQUEUE מבטל את השמירה של הערכים.

‫Items.push עם גיבובים

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

Items.poll

השיטה הזו מאחזרת רשומות בעדיפות גבוהה. כל רשומה שמוחזרת שמורה עד שהיא יוצאת משימוש, עד שהיא עוברת אינדוקס מחדש או עד שהיא מפסיקה להיות שמורה באמצעות Items.push.