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

בהינתן השאילתה לדוגמה הזו, פרשנות השאילתה מבצעת את הפעולות הבאות:
מנתח את הסכמה וקובע שהאובייקטים ברמה העליונה במקור הנתונים מסווגים כ-
objecttype:movies
. הפרשנות של השאילתה יודעת עכשיו ש'סרטים' בשאילתה הוא סוג אובייקט.סורק מסמכים במקור הנתונים, בשילוב עם הסכימה, כדי לקבוע איפה מופיעה המחרוזת '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
Film.המאפיין genreDefinition כולל את הערכים genre
operatorName
ו-CategorydisplayLabel
.
השמות המוצגים האלה מאפשרים ל-Cloud Search לפרש את השאילתות הבאות:
- המחרוזות 'סרטי פעולה', 'סרטים מסוג ז'אנר פעולה' או 'סרטים ז'אנר פעולה' מתפרשות כ-
genre:action object:movies
. - "movies with genre action or thriller" (סרטים בז'אנר פעולה או מתח) מתפרש כ-
objecttype:movies genre:(action OR thriller)
. - 'action film' או 'action films' מתפרש כ-
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
- 'movies with runtime less than 90' (סרטים עם זמן צפייה של פחות מ-90 דקות) מתפרש כ-
objjecttype: movies runtimelessthan:90
. - בהנחה שהשנה היא 2019, השאילתה 'סרטים שיצאו לאקרנים השנה ואורך הסרט יותר מ-120 דקות' מתפרשת כ-
releasedafter:2019-1-1 releasedbefore:2019-12-31 objecttype:movies runtimegreaterthan:120
. - “sort movies by release date” (מיון סרטים לפי תאריך הפרסום) יסנן לפי objecttype: movies (סוג האובייקט: סרטים) והתוצאות שיוצגו ימוינו לפי תאריך הפרסום בסדר מיון עולה כברירת מחדל.
הפעלת פרשנות של אופרטורים שמורים
אפשר גם להשתמש באופרטורים המובנים השמורים type
, before
, after
, objecttype
כדי לשפר את הפרשנות של השאילתה. כשמבצעים אינדוקס של מסמך, צריך לבצע את הפעולות הבאות:
ממלאים את השדה
updateTime
ב-ItemMetadata
כדי להשתמש באופרטוריםbefore
ו-after
. ההגדרות האלה מאפשרות ל-Cloud Search לפרש את השאילתות הבאות:- אם תגידו 'סרטים מהשבוע שעבר', יוצגו כל הסרטים שעודכנו באינדקס בשבוע הקודם.
- movies before jan 2019 יציג רשימה של כל הסרטים שעברו אינדוקס לפני ינואר 2019.
מאכלסים את השדה
mimeType
ב-ItemMetadata
כדי להשתמש בזיהוי אוטומטי של סוג. שאילתה כמו 'סרטוני פעולה' תציג רשימה של כל המסמכים של סרטי פעולה עם סוג MIME שלapplication/mp4
,application/mpeg4
,application/x-shockwave-flash
,video/
ו-application/vnd.google-apps.video
.
מגבלות על פרשנות של שאילתות
לתכונה 'פרשנות השאילתה' יש את המגבלות הבאות.
- פרשנות השאילתה פועלת רק ברשימות ה-ACL של מקורות הנתונים האלה:
- כל המסמכים גלויים לכולם בדומיין (כל מי שנמצא בדומיין יכול לגשת אליהם).
- כל המסמכים הם ציבוריים במקור הנתונים (כל מי שיש לו גישה לרשימת בקרת הגישה של מקור הנתונים).
- לרוב המסמכים במקור הנתונים יש אותה רשימת ACL (כל המסמכים מקבלים בירושה את רשימת ה-ACL מאותו פריט מאגר) ולא מוגדרים קוראים נוספים.
- אם לכמה אופרטורים של סכימה יש את אותו ערך, הפרשנות של הערך הזה לגבי כוונת האופרטור בשאילתה תלויה בגורם הביטחון הכולל שמוחזר על ידי מערכת פרשנות השאילתות. לדוגמה, נניח שיש לכם את המאפיינים
priority
ו-severity
עם אותם שמות של אופרטורים שמוגדרים בסכימה. נניח ששני האופרטורים יכולים לקבל את הערכים 0, 1, 2 או 3. בדוגמה הזו, הערך '0' בשאילתה יכול להתייחס לערך האופרטור שלpriority
או שלseverity
. הערכים האלה לא חד-משמעיים ורמת הוודאות נמוכה יותר. - כברירת מחדל, כשמתבצעת פרשנות של שאילתה ב-Cloud Search, האותיות הקטנות של ערכי השדות מומרות לאותיות גדולות, למעט אופרטורים של טקסט שמוגדרים עם האפשרויות
exactMatchWithOperator
. - האופרטור
source
לא נתמך בשאילתות. - שאילתות שמשלבות מונחים מבוססי-אופרטור ומונחים מבוססי-טקסט חופשי לא מפוענחות. לדוגמה, השאילתה "p0 priority cases severity:s0" לא נתמכת כי "p0 priority cases" הוא מונח טקסט חופשי, בעוד "severity:s0" הוא מונח שמבוסס על אופרטור.
- אסטרטגיית פירוש השאילתה תמיד משלבת את התוצאות המפורשות עם תוצאות רגילות (לא מפורשות, מדורגות לפי רלוונטיות). היא לא מבצעת החלפה מלאה של התוצאות בדף.