התכונה פירוש שאילתות של Cloud Search מפרשת באופן אוטומטי את האופרטורים והמסננים בשאילתת משתמש וממירה את הרכיבים האלה לשאילתה מובנית שמבוססת על אופרטור. כדי לפרש את השאילתות, משתמשים באופרטורים שהוגדרו בסכימה, יחד עם המסמכים שנוספו לאינדקס, כדי להסיק מה המשמעות של שאילתת המשתמש. תכונה זו מאפשרת למשתמש לחפש עם מספר מינימלי של מילות מפתח, ועדיין להשיג תוצאות מדויקות.
התוצאות שמוצגות למשתמש בפועל תלויות ברמת הביטחון של פרשנות השאילתה. מידת הסמך מבוססת על מספר גורמים, כולל המיקום שבו מחרוזות השאילתה מופיעות במסמכים שנוספו לאינדקס. מחרוזת, כמו השם של השחקן 'טום הנקס', שמופיעה באופן עקבי בשדה סכימה בשם actors
, משפרת את רמת הסמך. אותה מחרוזת
(Tom הנקס) שמופיעה בתוך פסקה, במקום בשדה סכימה, יכולה להניב רמת מהימנות נמוכה יותר. במקרה של ביטחון חזק, למשתמש יוצגו רק תוצאות מפרשנות השאילתה. במקרה של רמת ביטחון נמוכה יותר, התוצאות מפרשנות השאילתה ישולבו עם תוצאות חיפוש רגילות של מילת מפתח.
דוגמה לפרשנות של שאילתה
נניח שיש לכם מקור נתונים, כמו מסד נתונים, שמכיל מידע על סרטים. איור 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
כדי לשפר את פענוח השאילתות. כשמוסיפים מסמך לאינדקס:
צריך לאכלס את השדה
updateTime
ב-ItemMetadata
כדי להשתמש באופרטוריםbefore
ו-after
. ההגדרות האלה מאפשרות ל-Cloud Search לבצע את פרשנויות השאילתות הבאות:- הקטע 'סרטים מהשבוע שעבר' יציג את כל הסרטים שעודכנו באינדקס בשבוע הקודם.
- ברשימה 'סרטים לפני ינואר 2019' יופיעו כל הסרטים שנוספו לאינדקס לפני ינואר 2019.
מאכלסים את השדה
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
לא נתמך בשאילתות. - שאילתות שמשולבות בהן מונחים מבוססי אופרטורים ומונחים של טקסט חופשי לא מתפרשות. לדוגמה, לא תהיה תמיכה בשאילתה 'p0 בעדיפות severity:s0' כי 'בקשות בעדיפות p0' הוא מונח בטקסט חופשי ו-'severity:s0' הוא מונח המבוסס על אופרטור.
- האסטרטגיה של פרשנות השאילתות תמיד משלבת את התוצאות המפורשות עם תוצאות רגילות (ללא דירוג רלוונטיות). לא מתבצעת החלפה של התוצאות בדף מלא.