התכונה פירוש שאילתה של Cloud Search מפרשת באופן אוטומטי את האופרטורים והמסננים בשאילתת המשתמש, וממירה את הרכיבים האלה לשאילתה מובנית שמבוססת על אופרטורים. פירוש השאילתה משתמש באופרטורים שמוגדרים בסכימה, יחד עם המסמכים שנוספו לאינדקס, כדי להסיק מה המשמעות של השאילתה של המשתמש. התכונה הזו מאפשרת למשתמש לחפש עם מספר מינימלי של מילות מפתח, ועדיין לקבל תוצאות מדויקות.
התוצאות בפועל שיוצגו למשתמש תלויות ברמת הביטחון של פירוש השאילתה. המהימנות מבוססת על כמה גורמים, כולל המיקום של מחרוזות השאילתה במסמכים שנוספו לאינדקס. מחרוזת, כמו שם השחקן "Tom Hanks", שמופיעה באופן עקבי בשדה סכימה שנקרא actors
, תוביל לרמת סמך גבוהה יותר. אותה מחרוזת ('Tom Hanks') שמופיעה בפסקה, במקום שדה סכימה, עשויה להיות רמת סמך נמוכה יותר. במקרה של מהימנות, רק תוצאות מפירוש השאילתה מוצגות למשתמש. במקרה שרמת הביטחון נמוכה יותר, התוצאות מפירוש השאילתה משולבות עם תוצאות חיפוש רגילות של מילת מפתח.
דוגמה לפרשנות שאילתה
נניח שיש לכם מקור נתונים, כמו מסד נתונים, שמכיל מידע על סרטים. איור 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
כדי לשפר את פירוש השאילתות. כשמוסיפים מסמך לאינדקס, צריך לבצע את הפעולות הבאות:
מאכלסים את השדה
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 מאותו פריט בקונטיינר) בלי מוגדרים קוראים נוספים.
- אם למספר אופרטורים של סכימה יש ערך זהה, הפרשנות של הערך הזה ל-Intent של אופרטור שאילתה תלויה בגורם הסמך הכולל שמוחזר על ידי המערכת לפירוש השאילתות. לדוגמה, נניח שיש לכם את המאפיינים
priority
ו-severity
עם אותם שמות אופרטורים שמוגדרים בסכימה. נניח ששני האופרטורים יכולים לקבל את הערכים 0, 1, 2 או 3. בדוגמה הזו, '0' בשאילתה יכול להתייחס לערך האופרטור שלpriority
או שלseverity
. הערכים האלה לא ברורים ורמת הסמך נמוכה יותר. - כברירת מחדל, פרשנות השאילתה ב-Cloud Search מפחיתה את המקרים של ערכי השדות כשמפרשים את השאילתה, למעט אופרטורים של טקסט שמוגדרים עם אפשרויות
exactMatchWithOperator
. - האופרטור
source
לא נתמך בשאילתות. - שאילתות שמשלבות מונחים המבוססים על אופרטורים עם מונחי טקסט חופשיים לא יתפרשו. לדוגמה, לא תהיה תמיכה בשאילתה 'p0o בהשוואה לעדיפות: severity:s0', כי 'p0Priority cases' הוא מונח טקסט חופשי, ואילו severity:s0 הוא מונח שמבוסס על אופרטור.
- האסטרטגיה לפרשנות השאילתה תמיד משלבת את התוצאות המפורשות עם תוצאות רגילות (ללא פרשנות, עם דירוג רלוונטיות). הוא לא מבצע החלפה מלאה של דף התוצאות.