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

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

התוצאות שמוצגות למשתמש בפועל תלויות בביטחון של פרשנות השאילתה. המהימנות מבוססת על כמה גורמים, כולל המיקום שבו מחרוזות השאילתה מופיעות במסמכים שנוספו לאינדקס. מחרוזת, כמו השם של השחקן טום הנקס, שמופיעה באופן עקבי בשדה בסכימה שנקרא actors, משפרת את רמת הסמך. אותה מחרוזת ("Tom Hanks") שמופיעה בפסקה, במקום בשדה הסכימה, עלולה להוביל לרמת סמך נמוכה יותר. במקרה של רמת מהימנות גבוהה, רק תוצאות מפרשנות השאילתה מוצגות למשתמש. במקרה של רמת מהימנות נמוכה יותר, התוצאות מפרשנות השאילתה ימוזגו עם תוצאות חיפוש רגילות של מילות מפתח.

דוגמה לפרשנות שאילתה

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

סקירה כללית של פירוש שאילתות
איור 1. פירוש השאילתות

על סמך השאילתה לדוגמה הזו, פרשנות השאילתות מתבצעת:

  • מנתח את הסכימה וקובע שהאובייקטים ברמה העליונה במקור הנתונים מסווגים כ-objecttype:movies. כיום, פרשנות השאילתות נדע ש"סרטים" בשאילתה הם סוג אובייקט.

  • הפונקציה סורקת מסמכים במקור הנתונים, בשילוב עם הסכימה, כדי לקבוע איפה תופיע המחרוזת "action". אם המחרוזת מופיעה בעיקר בשדה ספציפי של מקור נתונים 'ז'אנר', לפי פירוש השאילתה, ברור ש-'action' הוא ערך המאפיין של המאפיין 'ז'אנר' כמוגדר בסכימה. אם המחרוזת מופיעה בעיקר בהקשר של פסקאות תוכן, רמת הסמך של פרשנות השאילתות יורדת.

פרשנות השאילתה שתתקבל היא:

  actor:“tom hanks” genre:action objecttype:movies

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

בניית הסכימה לתמיכה בפרשנות שאילתות

כדאי לבנות את הסכימה כך שתוכלו להפיק תועלת מפירוש השאילתות.

הפעלת פירושים של שמות מוצגים

הפרשנות של השאילתות ב-Cloud Search משתמשת בסכימה objectDefinitions ו-propertyDefinitions כדי לפרש את שאילתת המשתמש ולכוונן את התוצאות. כדי להפיק את המרב מהרכיבים האלה, כדאי ליצור שמות תצוגה אינטואיטיביים באמצעות displayLabel לשמות נכסים, objectDisplayLabel לשמות אובייקטים ו-operatorName לאופרטורים.

הסכימה הבאה מציגה שמות מוצגים אינטואיטיביים לאובייקט של סרט:

{
  "objectDefinitions": [
    {
      "name": "movie",
        "options": {
          "displayOptions": {
          "objectDisplayLabel": "Films"
        }
        ...
      },
      "propertyDefinitions": [
        {
          "name": "genre",
          "isReturnable": true,
          "isRepeatable": true,
          "isFacetable": true,
          "textPropertyOptions": {
          "retrievalImportance": { "importance": "HIGHEST" },
          "operatorOptions": {
            "operatorName": "genre"
          }
        },
        "displayOptions": {
          "displayLabel": "Category"
        }
      },
      ...
      ]
    }
  ]
}

בדוגמה הקודמת:

  • בהגדרת אובייקט הסרט יש objectDisplayLabel 'סרט'.

  • למאפיין הז'אנר יש 'ז'אנר' operatorName ו'קטגוריה' displayLabel.

השמות לתצוגה האלה מאפשרים ל-Cloud Search ליצור את פרשנויות השאילתות הבאות:

  • המונח 'סרטי פעולה', 'סרטי פעולה בז'אנר' או 'פעולה בז'אנר של סרטים' יתפרש כ-genre:action object:movies.
  • "סרטים עם ז'אנר או מותחן" מפוענחים בתור objecttype:movies genre:(action OR thriller).
  • המונח "סרט פעולה" או "סרטי פעולה" יתפרש בתור genre:action objecttype:movies.
  • המונח 'סרטים בקטגוריית קומדיה' מפוענח כ-genre:comedy objecttype:movies.

הפעלה של פירושי תאריך, מספרי ומיון

צריך להגדיר את lessThanOperatorName ואת greaterThanOperatorName שצוינו בשדה IntegerOperatorOptions לכל מאפייני התאריך והמאפיינים המספריים. ההגדרות האלה מאפשרות הצגה אוטומטית של תאריך ופרשנויות מספריות. בנוסף, כדי להפעיל פירושי מיון, צריך להגדיר את האפשרות isSortable למאפיינים של תאריך ומספרים. בסכימה הבאה מוסבר איך להפעיל את האפשרויות האלה.

{
  "objectDefinitions": [
    {
      "options": {
        "displayOptions": {
          "objectDisplayLabel": "Films"
        }
      },
      "propertyDefinitions": [
        {
          "name": "runtime",
          "isReturnable": true,
          "isSortable": true,
          "integerPropertyOptions": {
            "orderedRanking": "DESCENDING",
            "minimumValue": {
              "value": 10
            },
            "maximumValue": {
              "value": 500
            },
            "operatorOptions": {
              "operatorName": "runtime",
              "lessThanOperatorName": "runtimelessthan",
              "greaterThanOperatorName": "runtimegreaterthan"
            }
          },
          "displayOptions": {
            "displayLabel": "Length"
          }
        },
        {
          "name": "releasedate",
          "isReturnable": true,
          "isSortable": true,
          "datePropertyOptions": {
            "operatorOptions": {
              "operatorName": "releasedate",
              "lessThanOperatorName": "releasedbefore",
              "greaterThanOperatorName": "releasedafter"
            }
          }
        }
      ]
    }
  ]
}

בדוגמה הקודמת:

  • המאפיין המספרי runtime מתייחס לאורך של סרט. הערכים runtimelessthan וגם runtimegreaterthan מוגדרים לנכס הזה.
  • מאפיין התאריך releaseDate מתייחס למועד שבו סרט מופץ בבתי הקולנוע. ההגדרות releasedbefore וגם releasedafter הוגדרו לנכס הזה.

ההגדרות האלה מאפשרות ל-Cloud Search ליצור את פרשנויות השאילתות הבאות:

  • בהנחה שהשנה היא 2019, הערך "סרטים שיצאו השנה" יפורש בתור objecttype: movies releasedafter:2019-1-1 releasedbefore:2019-12-31.
  • בהנחה שהשבוע הוא השבוע השלישי בחודש מרץ, הפירוש של "סרטים שפורסמו בשבוע שעבר" הוא objecttype: movies releasedafter:2019-3-10 releasedbefore:2019-3-16
  • "סרטים עם זמן ריצה קטן מ-90" יפורשו כ-objjecttype: movies runtimelessthan:90.
  • בהנחה שהשנה היא 2019, הערך "סרטים שיצאו השנה והאורך שלהם עולה על 120" יפורש כ-releasedafter:2019-1-1 releasedbefore:2019-12-31 objecttype:movies runtimegreaterthan:120.
  • "מיון סרטים לפי תאריך הפצה" יסנן לפי "objecttype: Movies", והתוצאות שיוצגו ימוינו לפי תאריך הפרסום, וסדר המיון שהוגדר כברירת מחדל יהיה בסדר עולה.

הפעלה של פירוש אופרטור שמור

אפשר גם להשתמש באופרטורים המובנים השמורים ל-type, before, after, objecttype כדי לשפר את פרשנות השאילתות. כשמוסיפים מסמך לאינדקס:

  1. כדי להשתמש באופרטורים before ו-after, צריך לאכלס את השדה updateTime ב-ItemMetadata. ההגדרות האלה מאפשרות ל-Cloud Search ליצור את פירושי השאילתות הבאות:

    • בקטע 'סרטים מהשבוע שעבר' יוצגו כל הסרטים שעודכנו באינדקס בשבוע הקודם.
    • ברשימה "סרטים לפני ינואר 2019" יופיעו כל הסרטים שנוספו לאינדקס לפני ינואר 2019.
  2. מאכלסים את השדה mimeType ב-ItemMetadata כדי להשתמש בזיהוי אוטומטי של סוג. בשאילתה 'סרטוני פעולה' יופיעו כל המסמכים של סרטי פעולה עם סוג MIME של application/mp4, application/mpeg4, application/x-shockwave-flash, video/ ו-application/vnd.google-apps.video.

מגבלות על פרשנות שאילתות

לתכונת פרשנות השאילתות יש את המגבלות הבאות.

  • פירוש השאילתות פועל רק ברשימות ה-ACL הבאות של מקור הנתונים:
    • כל המסמכים מוגדרים כציבוריים בדומיין (לכל מי שבדומיין יש גישה).
    • כל המסמכים הם מקור נתונים ציבוריים (כל מי שיש לו גישה ל-ACL של מקור הנתונים).
    • לרוב המסמכים במקור הנתונים יש אותה רשימת ACL (כל המסמכים יורשים ACL מאותו פריט מאגר), ללא הגדרה של קוראים נוספים.
  • אם למספר אופרטורים של סכימה יש ערך זהה, הפרשנות של הערך הזה ל-Intent של אופרטור בשאילתה תלויה בגורם המהימנות הכולל שהוחזר על ידי המערכת מפרשת השאילתות. לדוגמה, נניח שיש לכם את המאפיינים priority ו-severity עם אותם שמות אופרטורים שמוגדרים בסכימה. נניח ששני האופרטורים יכולים לקבל את הערכים 0, 1, 2 או 3. בדוגמה הזו, "0" בשאילתה יכול להתייחס לערך האופרטור של priority או severity. הערכים האלה לא ברורים ורמת הסמך נמוכה יותר.
  • כברירת מחדל, הפרשנות של שאילתות ב-Cloud Search מפחיתה את גודל האותיות של ערכי השדות כשמפרשים את השאילתה, חוץ מהאופרטורים של טקסט שמוגדרים עם האפשרויות של exactMatchWithOperator.
  • האופרטור source לא נתמך בשאילתות.
  • שאילתות שמשלבות מונחים המבוססים על אופרטורים ומונחים של טקסט חופשי לא מתפרשות. לדוגמה, לא תהיה תמיכה בשאילתה 'p0 שהיא מקרי עדיפות של רמת חומרה:s0' כי 'מקרים בעדיפות p0' היא מונח שמבוסס על טקסט חופשי, ואילו 'מידת חוּמרה:s0' היא מונח שמבוסס על אופרטורים.
  • האסטרטגיה של פרשנות השאילתות משלבת תמיד את התוצאות המפוענחות עם תוצאות רגילות (שאינן מתפרשות, לפי דירוג רלוונטיות). לא ניתן להחליף את התוצאות בדף מלא.