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

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

התוצאות בפועל שיוצגו למשתמש תלויות ברמת הסמך של פרשנות השאילתה. הביטחון מבוסס על כמה גורמים, כולל המיקום שבו מחרוזות השאילתה מופיעות במסמכים שנוספו לאינדקס. מחרוזת, כמו בתור שם השחקן "טום הנקס", מופיעה באופן עקבי שנקרא 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.
  • השדה 'sort movies by date date' (מיון סרטים לפי תאריך פרסום) מסנן לפי 'objecttype: movies' התוצאות שיוצגו ימוינו בתאריך הפרסום לפי סדר המיון שמוגדר כברירת מחדל עולה.

הפעלת פרשנות של אופרטור שמור

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

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

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

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

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

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