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

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

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

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

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

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

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

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

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

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

  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. מאכלסים את השדה updateTime ב-ItemMetadata כדי להשתמש באופרטורים before ו-after. ההגדרות האלו מאפשרות ל-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 לא נתמך בשאילתות.
  • שאילתות שמשלבות מונחים המבוססים על אופרטורים עם מונחי טקסט חופשיים לא יתפרשו. לדוגמה, לא תהיה תמיכה בשאילתה 'p0o בהשוואה לעדיפות: severity:s0', כי 'p0Priority cases' הוא מונח טקסט חופשי, ואילו severity:s0 הוא מונח שמבוסס על אופרטור.
  • האסטרטגיה לפרשנות השאילתה תמיד משלבת את התוצאות המפורשות עם תוצאות רגילות (ללא פרשנות, עם דירוג רלוונטיות). הוא לא מבצע החלפה מלאה של דף התוצאות.