סכימה של Google Cloud Search היא מבנה JSON שמגדיר אובייקטים, מאפיינים ואפשרויות לשימוש באינדקס ובהרצת שאילתות על הנתונים. מחבר התוכן קורא נתונים מהמאגר שלך, וגם על סמך רשומות, מבנה ואינדקס של הנתונים.
אפשר ליצור סכימה על ידי הוספת אובייקט של סכימת JSON ל-API ולאחר מכן לרשום אותו. צריך לרשום אובייקט סכימה עבור כל אחד מהמאגרים, לפני שתוכלו להוסיף את הנתונים לאינדקס.
במסמך הזה נסביר את העקרונות הבסיסיים של יצירת סכימה. לקבלת מידע על האופן שבו ולכוונן את הסכימה כדי לשפר את חוויית החיפוש, לשפר את איכות החיפוש.
יצירה של סכימה
בהמשך מפורטת רשימה של שלבים ליצירת הסכימה של Cloud Search:
- זיהוי התנהגות המשתמשים הצפויה
- הפעלה של מקור נתונים
- יצירת סכימה
- השלמת הסכימה לדוגמה
- רישום הסכימה
- הוספת הנתונים לאינדקס
- בדיקת הסכימה
- כוונון הסכימה
זיהוי של התנהגות משתמשים צפויה
בדיקת סוגי השאילתות שהמשתמשים שולחים תעזור לכם לגבש אסטרטגיה ליצירת הסכימה.
לדוגמה, כשמבצעים שאילתות על מסד נתונים של סרטים, אפשר לצפות משתמש מבצע שאילתה כמו "Show me all movies starring רוברט רדפורד". לכן, הסכימה שלכם חייבת לתמוך בתוצאות של שאילתות שמבוססות על "כל הסרטים עם לשחקן ספציפי".
כדי להגדיר את הסכימה כך שתשקף את דפוסי ההתנהגות של המשתמשים, מומלץ ביצוע המשימות האלה:
- להעריך קבוצה מגוונת של שאילתות רצויות ממשתמשים שונים.
- אתם יכולים לזהות את האובייקטים שבהם אפשר להשתמש בשאילתות. אובייקטים הם לוגיים קבוצות של נתונים קשורים, כמו סרט במסד נתונים של סרטים.
- זיהוי המאפיינים והערכים שמרכיבים את האובייקט ועשויים להיות שבו נעשה שימוש בשאילתות. מאפיינים הם המאפיינים של האובייקט שאפשר להוסיף לאינדקס. הם יכולים לכלול ערכים פרימיטיביים או אובייקטים אחרים. לדוגמה, לאובייקט של סרט יכולים להיות מאפיינים כמו שם הסרט את תאריך ההפצה כערכים ראשוניים. אובייקט הסרט עשוי להכיל גם כמו חברי Cast, שיש להם מאפיינים משלהם, כמו שם או תפקיד.
- ניתן לזהות ערכים חוקיים לדוגמה של נכסים. ערכים הם הנתונים בפועל נוסף לאינדקס עבור נכס מסוים. לדוגמה, שם של סרט אחד במסד הנתונים עשוי להיות "Raiders of the Lost Ark"
- אתם יכולים לקבוע את אפשרויות המיון והדירוג הרצויות שהמשתמשים שלכם רוצים. לדוגמה, בעת הרצת שאילתות על סרטים, ייתכן שהמשתמשים ירצו למיין אותם בסדר כרונולוגי ולדרג לפי של דירוג הקהל ואין צורך למיין לפי שם בסדר אלפביתי.
- (אופציונלי) כדאי לשקול אם אחד מהנכסים מייצג ערך ספציפי יותר ההקשר שבו ניתן לבצע חיפושים, כמו תפקיד במחלקת IT, כדי שאפשר יהיה לקבל הצעות של השלמה אוטומטית הקשר מסוים. לדוגמה, אנשים שמחפשים מסד נתונים של סרטים עשויים להתעניין רק בז'אנר מסוים של סרטים. המשתמשים יגדירו מה הז'אנר שהם רוצים שהחיפושים יחזרו, כנראה כחלק מהמותג פרופיל. לאחר מכן, כשמשתמש מתחיל להקליד שאילתה על סרטים, רק סרטים מהז'אנר המועדף עליהם, כמו "סרטי פעולה", מוצעים כ חלק מההצעות של ההשלמה האוטומטית.
- מכינים רשימה של האובייקטים, המאפיינים והערכים לדוגמה שיכולים להיות שבו נעשה שימוש בחיפושים. (כדי לקבל פרטים על אופן השימוש ברשימה הזו: קראו את הקטע הגדרת אפשרויות אופרטורים.)
אתחול מקור הנתונים
מקור נתונים מייצג את הנתונים ממאגר שנוסף לאינדקס ומאוחסנים ב-Google Cloud. לקבלת הוראות לאתחול מקור נתונים: להתייחס אל ניהול מקורות נתונים של צד שלישי
תוצאות החיפוש של המשתמש מוחזרות ממקור הנתונים. כשמשתמש לוחץ על של תוצאת חיפוש, Cloud Search מפנה את המשתמשים אל הפריט עצמו באמצעות כתובת ה-URL שצוינה בבקשה להוספה לאינדקס.
הגדרת האובייקטים
יחידת הנתונים הבסיסית בסכימה היא האובייקט, שנקרא גם סכימה אובייקט", שהוא מבנה לוגי של נתונים. במסד נתונים של סרטים, המבנה הלוגי של הנתונים הוא "סרט". אובייקט אחר יכול להיות "person" [אדם] אל שמייצג את צוות השחקנים והצוות שמעורבים בסרט.
לכל אובייקט בסכימה יש סדרה של מאפיינים או מאפיינים מתארים את האובייקט, למשל השם ומשך הזמן של סרט, או השם ותאריך לידה של אדם. תכונות של אובייקט יכולות לכלול פרימיטיבי וערכים אחרים.
איור 1 מציג את האובייקטים של הסרט ושל האדם המשויכים אליהם נכסים.
![שרטוט של חיבורי סכימה בין ישויות](https://developers.google.cn/static/cloud-search/images/schemaExample.png?authuser=0000&hl=he)
סכימה של Cloud Search
או בעצם רשימה של הצהרות על הגדרות אובייקטים שמוגדרות
תג objectDefinitions
. קטע הקוד הבא של הסכימה מציג
ההצהרות objectDefinitions
של האובייקטים של הסכימה של הסרט ושל האדם.
{
"objectDefinitions": [
{
"name": "movie",
...
},
{
"name": "person",
...
}
]
}
כשמגדירים אובייקט סכימה, צריך לספק name
לאובייקט שחייב
להיות ייחודי מבין כל האובייקטים האחרים בסכימה. בדרך כלל משתמשים בname
ערך שמתאר את האובייקט, למשל movie
לאובייקט מסוג סרט. הסכימה
השירות משתמש בשדה name
כמזהה מפתח לאובייקטים שניתן להוסיף לאינדקס. עבור
מידע נוסף על השדה name
,
הגדרת אובייקט.
הגדרת מאפייני אובייקט
כפי שמצוין בהפניה עבור
ObjectDefinition,
אחרי שם האובייקט מופיעה קבוצה של
options
,
ורשימה של
propertyDefinitions
.
options
יכולה
שכולל עוד
freshnessOptions
וגם
displayOptions
.
freshnessOptions
משמשים לשינוי הדירוג בחיפוש על סמך מידת העדכניות של פריט.
displayOptions
משמשים כדי לקבוע אם תוויות ונכסים ספציפיים יוצגו
את תוצאות החיפוש של אובייקט.
propertyDefinitions
הוא המקום שבו מגדירים את המאפיינים של האובייקט, כמו שם הסרט
ותאריך פרסום.
קטע הקוד הבא מציג את האובייקט movie
עם שני מאפיינים: movieTitle
ו-releaseDate
.
{
"objectDefinitions": [
{
"name": "movie",
"propertyDefinitions": [
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": {
"operatorName": "title"
}
},
"displayOptions": {
"displayLabel": "Title"
}
},
{
"name": "releaseDate",
"isReturnable": true,
"isSortable": true,
"datePropertyOptions": {
"operatorOptions": {
"operatorName": "released",
"lessThanOperatorName": "releasedbefore",
"greaterThanOperatorName": "releasedafter"
}
},
"displayOptions": {
"displayLabel": "Release date"
}
...
]
}
]
}
PropertyDefinition מורכב מהפריטים הבאים:
- מחרוזת
name
. - רשימה של אפשרויות שלא קשורות לסוגים שונים, כמו
isReturnable
של המסנן הקודם . - טיפוס מסוים והאפשרויות הספציפיות של סוג מסוים שמשויכות אליו,
כמו
textPropertyOptions
ו-retrievalImportance
בקטע הקוד הקודם. operatorOptions
שמתאר את אופן השימוש בנכס בתור אופרטור החיפוש.displayOptions
אחד או יותר, כמוdisplayLabel
בקטע הקוד הקודם.
הערך name
של מאפיין חייב להיות ייחודי באובייקט שמכיל אותו,
אבל אפשר להשתמש באותו שם באובייקטים אחרים ובאובייקטי משנה אחרים.
באיור 1, השם ותאריך הפרסום של הסרט הוגדרו פעמיים:
פעם אחת באובייקט movie
ופעם נוספת באובייקט המשנה filmography
של האובייקט
אובייקט person
. הסכימה הזו עושה שימוש חוזר בשדה movieTitle
כך שהסכימה יכולה לתמוך בשני סוגים של התנהגויות חיפוש:
- הצגת תוצאות של סרטים כשמשתמשים מחפשים את שם הסרט.
- הצגת תוצאות של אנשים כשמשתמשים מחפשים את שם הסרט שבהם שיחק השחקן.
באופן דומה, הסכימה עושה שימוש חוזר בשדה releaseDate
כי יש לו את אותו
המשמעות עבור שני השדות movieTitle
.
כשאתם מפתחים סכימה משלכם, נסו לחשוב על הקשרים בין המאגר שלכם. שדות שמכילים נתונים שאתם רוצים להצהיר עליהם יותר מפעם אחת בסכימה.
הוספת אפשרויות שאינן תלויות סוגים
PropertyDefinition מפרט אפשרויות כלליות של פונקציונליות חיפוש הנפוצות לכל הנכסים ללא קשר לסוג הנתונים.
isReturnable
– מציין אם הנכס מזהה נתונים שצריך להיות שהוחזרו בתוצאות החיפוש דרך Query API. כל הסרטים לדוגמה ניתנים להחזרה. ניתן להשתמש בנכסים שאינם ניתנים להחזרה לחיפוש או את דירוג התוצאות מבלי להחזיר אותן למשתמש.isRepeatable
– מציין אם לנכס יכולים להיות כמה ערכים. עבור לדוגמה: לסרט יש רק תאריך פרסום אחד, אבל יכולים להיות לו כמה שחקנים.isSortable
– מציין שאפשר להשתמש בנכס למיון. הזה הוא לא יכול להיות TRUE עבור מאפיינים שחוזרים על עצמם. לדוגמה, תוצאות של סרטים ממוין לפי תאריך פרסום או לפי דירוג קהל.isFacetable
– מציין שניתן להשתמש בנכס ליצירת מאפיינים. מאפיין מסוים משמש לצמצום תוצאות החיפוש שבהן המשתמש רואה את התוצאות הראשוניות, ולאחר מכן מוסיף קריטריונים או מאפיינים כדי לצמצם אותם עוד יותר. תוצאות. אפשרות זו אינה יכולה להיות נכונה עבור מאפיינים שהסוג שלהם הוא אובייקט כדי להגדיר את האפשרות הזו, הערך שלisReturnable
צריך להיות True. לבסוף, האפשרות הזו נתמך במאפיינים 'טיפוסים בני מנייה (enum)', 'בוליאני' ו'טקסט'. לדוגמה, בסכימה לדוגמה שלנו, אנחנו עשויים ליצור טבלת הפנים שלgenre
,actorName
,userRating
ו-mpaaRating
כדי לאפשר להם: יכול לשמש לחידוד אינטראקטיבי של תוצאות החיפוש.isWildcardSearchable
מציין שמשתמשים יכולים לבצע חיפוש עם תווים כלליים לחיפוש לנכס הזה. האפשרות הזו זמינה רק בנכסי טקסט. איך תו כללי לחיפוש פועל בשדה הטקסט בהתאם לערך שהוגדר בשדה השדה exactMatchWithOperator. אם המדיניותexactMatchWithOperator
מוגדרת לערךtrue
, ערך הטקסט עובר המרה לאסימונים כערך אטומי אחד, וחיפוש עם תו כללי לחיפוש שמבוצעת כנגדו. לדוגמה, אם ערך הטקסט הואscience-fiction
, שאילתה עם תו כללי לחיפושscience-*
תואמת לשאילתה. אם המדיניותexactMatchWithOperator
מוגדרת לערךfalse
, ערך הטקסט עובר הצפנה באמצעות אסימון (טוקניזציה) ומתבצע חיפוש עם תו כללי לחיפוש של כל אסימון. לדוגמה, אם ערך הטקסט הוא 'מדע בדיוני', התו הכללי לחיפוש השאילתותsci*
אוfi*
תואמות לפריט, אבלscience-*
לא תואם לו.
הפרמטרים הכלליים האלה של פונקציונליות החיפוש הם ערכים בוליאניים. הם
לכולן יש ערך ברירת מחדל של false
וצריך להגדיר אותן כ-true
שאפשר להשתמש בהם.
בטבלה הבאה מוצגים הפרמטרים הבוליאניים שמוגדרים ל-true
.
לכל המאפיינים של האובייקט movie
:
נכס | isReturnable |
isRepeatable |
isSortable |
isFacetable |
isWildcardSearchable |
---|---|---|---|---|---|
movieTitle |
true | true | |||
releaseDate |
true | true | |||
genre |
true | true | true | ||
duration |
true | ||||
actorName |
true | true | true | true | |
userRating |
true | true | |||
mpaaRating |
true | true |
גם ב-genre
וגם ב-actorName
יש הגדרה של isRepeatable
לערך true
כי סרט שייך ליותר מז'אנר אחד, ובדרך כלל
יותר משחקן אחד. אי אפשר למיין מאפיין אם הוא ניתן לחזרה
או נכללות באובייקט משנה שניתן לחזור עליו.
הגדרה של סוג
PropertyDefinition
בקטע העזר מפורטות כמה xxPropertyOptions
כאשר xx
הוא סוג ספציפי,
כמו boolean
. כדי להגדיר את סוג הנתונים של הנכס, יש להגדיר
את האובייקט המתאים לסוג הנתונים. הגדרת אובייקט מסוג נתונים בנכס
קובע את סוג הנתונים של הנכס. לדוגמה, הגדרת
textPropertyOptions
עבור המאפיין movieTitle
מציין שהסרט
title הוא מסוג טקסט. בקטע הקוד הבא מוצג הנכס movieTitle
עם textPropertyOptions
הגדרת סוג הנתונים.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
...
},
...
},
לנכס יכול להיות רק סוג נתונים אחד משויך. לדוגמה, בסרט שלנו
הסכימה releaseDate
יכולה להיות רק תאריך (למשל, 2016-01-13
) או מחרוזת
(למשל January 13, 2016
), אבל לא בשתיהן.
אלה האובייקטים מסוג נתונים שמשמשים לציון סוגי הנתונים מאפיינים בסכימת הסרט לדוגמה:
נכס | אובייקט מסוג נתונים |
---|---|
movieTitle |
textPropertyOptions |
releaseDate |
datePropertyOptions |
genre |
enumPropertyOptions |
duration |
textPropertyOptions |
actorName |
textPropertyOptions |
userRating |
integerPropertyOptions |
mpaaRating |
textPropertyOptions |
סוג הנתונים שתבחרו לנכס תלוי בתרחישים לדוגמה הצפויים.
בתרחיש הדמיוני של סכימת הסרטים הזו, המשתמשים מצפים
כדי למיין את התוצאות בסדר כרונולוגי, כך שה-releaseDate
יהיה אובייקט של תאריך.
אם, למשל, היה תרחיש לדוגמה של השוואת גרסאות דצמבר
במהלך השנים עם גרסאות של ינואר, אז פורמט מחרוזת יכול להיות שימושי.
הגדרת אפשרויות ספציפיות לסוג
PropertyDefinition
הפניות בקטעים שמפנים לאפשרויות של כל סוג. הכי ספציפי לסוג
האפשרויות הן אופציונליות, מלבד הרשימה של possibleValues
enumPropertyOptions
. בנוסף, האפשרות orderedRanking
מאפשרת לך
לדרג ערכים זה ביחס לזה.
קטע הקוד הבא מציג את הנכס movieTitle
עם textPropertyOptions
הגדרה של סוג הנתונים ואפשרות ספציפית לסוג retrievalImportance
.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
...
},
...
}
אלה האפשרויות הנוספות שספציפיות לסוג שמשמש בסכימה לדוגמה:
נכס | סוג | אפשרויות ספציפיות לסוג |
---|---|---|
movieTitle |
textPropertyOptions |
retrievalImportance |
releaseDate |
datePropertyOptions |
|
genre |
enumPropertyOptions |
|
duration |
textPropertyOptions |
|
actorName |
textPropertyOptions |
|
userRating |
integerPropertyOptions |
orderedRanking , maximumValue |
mpaaRating |
textPropertyOptions |
הגדרת אפשרויות לאופרטורים
בנוסף לאפשרויות ספציפיות לסוג, לכל סוג יש קבוצה של אפשרויות
operatorOptions
האפשרויות האלה מתארות איך הנכס משמש
אופרטור החיפוש. בקטע הקוד הבא מוצג הנכס movieTitle
עם
textPropertyOptions
שמגדיר את סוג הנתונים, ובעזרת
אפשרויות ספציפיות לסוג retrievalImportance
ו-operatorOptions
.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": {
"operatorName": "title"
}
},
...
}
לכל operatorOptions
יש operatorName
, כמו title
עבור
movieTitle
שם האופרטור הוא אופרטור החיפוש של הנכס. א'
אופרטור החיפוש הוא הפרמטר שאתם מצפים שהמשתמשים ישתמשו בו
כשמצמצמים את החיפוש. לדוגמה, כדי לחפש סרטים לפי השם שלהם,
המשתמש מקלידים title:movieName
, ו-movieName
הוא שם הסרט.
שמות אופרטורים לא חייבים להיות זהים לשם הנכס. במקום זאת, צריך להשתמש בשמות אופרטורים שמשקפים את המילים הנפוצות ביותר על ידי משתמשים בארגון. לדוגמה, אם המשתמשים שלך מעדיפים את המונח "name" במקום 'title' לכותר סרט, שם האופרטור צריך להיות מוגדר ל'שם'.
אפשר להשתמש באותו שם אופרטור למספר נכסים, כל עוד
המאפיינים מפנים לאותו סוג. כשמשתמשים בשם של אופרטור משותף במהלך
שאילתה, כל המאפיינים שמשתמשים בשם האופרטור הזה מאוחזרים. לדוגמה,
נניח שאובייקט הסרט מכיל plotSummary
ו-plotSynopsis
הנכסים ובכל אחד מהנכסים האלה היו operatorName
של plot
. בתור
כל עוד שני המאפיינים האלה הם טקסט (textPropertyOptions
),
באמצעות אופרטור החיפוש plot
מאחזרת את שניהם.
בנוסף ל-operatorName
, נכסים שניתן למיין יכולים לכלול
שדות lessThanOperatorName
ו-greaterThanOperatorName
ב-operatorOptions
.
המשתמשים יכולים להשתמש באפשרויות האלו כדי ליצור שאילתות המבוססות על השוואות
שנשלח ערך מסוים.
לבסוף, textOperatorOptions
כולל שדה exactMatchWithOperator
ב-
operatorOptions
. אם
להגדיר את exactMatchWithOperator
לערך true
, מחרוזת השאילתה חייבת
תואם לערך הנכס כולו, ולא רק בטקסט.
המערכת תתייחס לערך הטקסט כערך אטומי אחד בחיפושי אופרטורים
התאמות מאפיינים.
לדוגמה, כדאי להוסיף לאינדקס אובייקטים של ספרים או סרטים עם מאפייני ז'אנר.
ז'אנרים יכולים לכלול 'מדע בדיוני', 'מדע' ו'סיפורת'. ב-
exactMatchWithOperator
מוגדר ל-false
או שהושמט,
לחפש ז'אנר
בחירה באפשרות "מדע" או 'סיפורת' גם מאפיין אחר
החזרות תוצאות עבור "מדע בדיוני" מאחר שהטקסט עובר המרה לאסימונים
"מדע" ו'סיפורת' והאסימונים נמצאים ב'מדע-בדיונות'.
כשהערך בשדה exactMatchWithOperator
הוא true
,
המערכת מתייחסת לטקסט כאסימון יחיד, כך שאף אחד
"מדע" ולא 'סיפורת' תואם ל"סיפור מדע".
(אופציונלי) מוסיפים את הקטע displayOptions
בסוף כל קטע יש קטע אופציונלי בשם displayOptions
קטע propertyDefinition
. המקטע הזה מכיל מחרוזת אחת מסוג displayLabel
.
displayLabel
היא תווית טקסט מומלצת וידידותית למשתמש
עבור הנכס. אם הנכס מוגדר להצגה באמצעות
ObjectDisplayOptions,
התווית הזו מוצגת לפני הנכס. אם הנכס מוגדר
עבור תצוגה ולא מוגדר displayLabel
, רק ערך המאפיין
מוצגת.
בקטע הקוד הבא מוצג הנכס movieTitle
עם displayLabel
מוגדר ל'כותרת'.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": {
"operatorName": "title"
}
},
"displayOptions": {
"displayLabel": "Title"
}
},
אלה הערכים של displayLabel
לכל המאפיינים של movie
של האובייקט בסכימה לדוגמה:
נכס | displayLabel |
---|---|
movieTitle |
Title |
releaseDate |
Release date |
genre |
Genre |
duration |
Run length |
actorName |
Actor |
userRating |
Audience score |
mpaaRating |
MPAA rating |
(אופציונלי) הוספת קטע של suggestionFilteringOperators[]
יש אפשרות
suggestionFilteringOperators[]
בסוף כל קטע propertyDefinition
. משתמשים בקטע הזה
להגדיר מאפיין שמשמש לסינון הצעות של השלמה אוטומטית. לדוגמה,
יכול להגדיר את האופרטור של genre
כדי לסנן הצעות לפי
הז'אנר של הסרט המועדף. לאחר מכן, כשהמשתמש יקליד את שאילתת החיפוש, רק
סרטים שתואמים לז'אנר המועדף עליהם מוצגים כחלק מההשלמה האוטומטית
הצעות.
רישום הסכימה
כדי לקבל נתונים מובְנים משאילתות של Cloud Search, צריך לרשום באמצעות שירות הסכימה של Cloud Search. כדי לרשום סכימה, מזהה מקור הנתונים שקיבלתם במהלך אתחול של מקור נתונים.
באמצעות המזהה של מקור הנתונים, מנפיקים UpdateSchema בקשה לרישום הסכימה שלכם.
כפי שמפורט UpdateSchema לדף העזר, לשלוח את בקשת ה-HTTP הבאה כדי לרשום את הסכימה:
PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema
גוף הבקשה צריך לכלול את הפרטים הבאים:
{ "validateOnly": // true or false, "schema": { // ... Your complete schema object ... } }
אפשר להשתמש באפשרות validateOnly
כדי לבדוק את תוקף הסכימה ללא
ברישום שלו בפועל.
הוספת הנתונים לאינדקס
לאחר רישום הסכימה, יש לאכלס את מקור הנתונים באמצעות אינדקס שיחות. ההוספה לאינדקס מתבצעת בדרך כלל בתוך מחבר התוכן שלכם.
באמצעות סכימת הסרט, בקשה ליצירת אינדקס של API ל-REST בשביל סרט אחד נראים כך:
{
"name": "datasource/<data_source_id>/items/titanic",
"acl": {
"readers": [
{
"gsuitePrincipal": {
"gsuiteDomain": true
}
}
]
},
"metadata": {
"title": "Titanic",
"sourceRepositoryUrl": "http://www.imdb.com/title/tt2234155/?ref_=nv_sr_1",
"objectType": "movie"
},
"structuredData": {
"object": {
"properties": [
{
"name": "movieTitle",
"textValues": {
"values": [
"Titanic"
]
}
},
{
"name": "releaseDate",
"dateValues": {
"values": [
{
"year": 1997,
"month": 12,
"day": 19
}
]
}
},
{
"name": "actorName",
"textValues": {
"values": [
"Leonardo DiCaprio",
"Kate Winslet",
"Billy Zane"
]
}
},
{
"name": "genre",
"enumValues": {
"values": [
"Drama",
"Action"
]
}
},
{
"name": "userRating",
"integerValues": {
"values": [
8
]
}
},
{
"name": "mpaaRating",
"textValues": {
"values": [
"PG-13"
]
}
},
{
"name": "duration",
"textValues": {
"values": [
"3 h 14 min"
]
}
}
]
}
},
"content": {
"inlineContent": "A seventeen-year-old aristocrat falls in love with a kind but poor artist aboard the luxurious, ill-fated R.M.S. Titanic.",
"contentFormat": "TEXT"
},
"version": "01",
"itemType": "CONTENT_ITEM"
}
חשוב לשים לב איך הערך של movie
בשדה objectType
תואם לאובייקט
את השם של ההגדרה בסכימה. התאמת שני הערכים האלה תאפשר ל-Cloud Search לדעת
אובייקט הסכימה שבו כדאי להשתמש במהלך ההוספה לאינדקס.
חשוב גם לשים לב איך ההוספה לאינדקס של מאפיין הסכימה releaseDate
משתמשת
נכסי המשנה year
, month
ו-day
שהם יורשים כי הם
מוגדר כסוג נתונים date
באמצעות datePropertyOptions
כדי להגדיר אותו.
עם זאת, מכיוון ש-year
, month
ו-day
אינם מוגדרים בסכימה,
לא תוכלו לשלוח שאילתה לגבי אחד מהנכסים האלה (למשל, year
) בנפרד.
כמו כן, חשוב לשים לב איך הנכס שניתן לחזור עליו actorName
נוסף לאינדקס באמצעות רשימה
של ערכים.
זיהוי בעיות פוטנציאליות בהוספה לאינדקס
שתי הבעיות הנפוצות ביותר הקשורות לסכימות ולהוספה לאינדקס הן:
הבקשה שלך להוספה לאינדקס מכילה אובייקט סכימה או שם נכס שלא היו רשום בשירות הסכימה. הבעיה הזו גורמת למאפיין או לאובייקט שצריך להתעלם מהן.
בקשת ההוספה לאינדקס מכילה נכס עם ערך סוג השונה מהסוג רשום בסכימה. הבעיה הזו גורמת ל-Cloud Search להחזיר שגיאה בזמן ההוספה לאינדקס.
בדיקת הסכימה באמצעות מספר סוגי שאילתות
לפני שרושמים את הסכימה למאגר נתונים גדול בסביבת הייצור, מומלץ לבצע בדיקה באמצעות מאגר נתונים קטן יותר למטרות בדיקה. בדיקה באמצעות מאגר בדיקות קטן יותר מאפשר לכם לבצע שינויים במהירות בסכימה, ולמחוק את הנתונים שנוספו לאינדקס, בלי להשפיע אינדקס גדול יותר או אינדקס ייצור קיים. למאגר נתונים לבדיקה, ACL שמאשרת רק למשתמש בדיקה, כדי שמשתמשים אחרים לא יוכלו לראות את הנתונים האלה בתוצאות החיפוש.
כדי ליצור ממשק חיפוש לאימות שאילתות חיפוש, ממשק החיפוש
בקטע הזה תמצאו דוגמאות לשאילתות שונות שלפיהם תוכלו לבדוק סכימת סרט.
בדיקה באמצעות שאילתה כללית
שאילתה גנרית מחזירה את כל הפריטים במקור הנתונים שמכילים פריט ספציפי String. באמצעות ממשק חיפוש, תוכל להריץ שאילתה כללית על סרט מקור נתונים באמצעות הקלדת המילה "titanic" והקשה על Return. הכול סרטים עם המילה "טיטאניק" בתוצאות החיפוש.
בדיקה עם אופרטור
הוספת אופרטור לשאילתה מגבילה את התוצאות לפריטים שתואמים לחיפוש
כערך אופרטור. לדוגמה, ייתכן שתרצו להשתמש באופרטור actor
כדי למצוא
כל הסרטים שבהם מככב שחקן מסוים. בעזרת ממשק חיפוש, אפשר לבצע
את השאילתה של האופרטור הזה פשוט על ידי הקלדת צמד operator=value, כמו
"actor:Zane" ולחיצה על "actor:Zane". כל הסרטים שבהם שחקן
בתוצאות החיפוש.
לכוונן את הסכימה
אחרי השימוש בסכימה ובנתונים, כדאי להמשיך לעקוב אחרי מה שעובד שהן לא מועילות למשתמשים. כדאי לשנות את הסכימה במצבים הבאים:
- הוספת שדה לאינדקס שלא נוסף לאינדקס בעבר. לדוגמה, המשתמשים שלך עשויים לחפש שוב ושוב סרטים לפי שם הבמאי, להתאים את הסכימה כך שתתמוך בשם של המנהל כאופרטור.
- שינוי שמות של אופרטורים של חיפוש על סמך משוב ממשתמשים. שמות המפעילים הם להיות ידידותי למשתמש. אם המשתמשים שלכם "זוכרים" באופן עקבי הלא נכון כדאי לשנות אותו.
הוספה מחדש לאינדקס לאחר שינוי סכימה
שינוי אחד מהערכים הבאים בסכימה לא מחייב אתכם להוסיף מחדש את הנתונים לאינדקס. אתם יכולים פשוט לשלוח טופס חדש UpdateSchema והאינדקס שלך ימשיך לפעול:
- שמות המפעילים.
- ערכי מינימום ומקסימום במספר שלם.
- דירוג לפי מספר שלם ו-enum.
- אפשרויות עדכניות.
- אפשרויות תצוגה.
בהתאם לשינויים הבאים, נתונים שנוספו בעבר לאינדקס ימשיכו לפעול בהתאם לסכימה שרשומה קודם לכן. אבל תצטרכו להוסיף אותם מחדש לאינדקס. רשומות קיימות כדי לראות שינויים בהתאם לסכימה המעודכנת, אם היא כוללת שינויים:
- הוספה או הסרה של נכס או אובייקט חדשים
- שינוי
isReturnable
,isFacetable
אוisSortable
מ-false
ל-true
עליך להגדיר את isFacetable
או isSortable
כ-true
רק אם יש
תרחיש שימוש ברור ומדויק.
לבסוף, כשמעדכנים את הסכימה על ידי סימון המאפיין isSuggestable
,
צריך להוסיף מחדש את הנתונים לאינדקס, מה שגורם לעיכוב בשימוש בהשלמה אוטומטית
לנכס הזה.
שינויים אסורים בנכסים
אסור לבצע חלק משינויי הסכימה, גם אם מוסיפים מחדש את הנתונים לאינדקס, מפני שהם תפגע באינדקס או תפיק תוצאות חיפוש גרועות או לא עקביות. האלה כוללים שינויים ב:
- סוג הנתונים של הנכס.
- שם הנכס.
- ההגדרה
exactMatchWithOperator
. - ההגדרה
retrievalImportance
.
עם זאת, יש דרך לעקוף את המגבלה הזו.
ביצוע שינוי מורכב בסכימה
כדי להימנע משינויים שיגרמו לתוצאות חיפוש לא טובות או לחיפוש לא תקין של Cloud Search, מונע סוגים מסוימים של שינויים UpdateSchema בקשות אחרי שהמאגר נוסף לאינדקס. לדוגמה, סוג הנתונים לא ניתן לשנות שם של נכס לאחר שהם הוגדרו. השינויים האלה ואין אפשרות להשיג אותה באמצעות UpdateSchema גם אם תוסיפו מחדש את הנתונים לאינדקס.
במצבים שבהם עליכם לבצע שינוי אסור אחר לרוב, אפשר לבצע סדרה של שינויים מותרים שמשיגים את אותם ! באופן כללי, מדובר בהעברה ראשונה של נכסים שנוספו לאינדקס מהגדרת אובייקט ישנה יותר להגדרה חדשה יותר, ואז נשלח בקשה להוספה לאינדקס שמשתמשת רק בנכס החדש יותר.
השלבים הבאים מראים איך לשנות את סוג הנתונים או את השם של נכס:
- מוסיפים מאפיין חדש להגדרת האובייקט בסכימה. שימוש במשתנה אחר מהנכס שרוצים לשנות.
- להנפיק את UpdateSchema עם ההגדרה החדשה. חשוב לשלוח את כל הסכימה, כולל גם את הנכס החדש וגם את הנכס הישן, בבקשה.
מילוי חוסרים של האינדקס ממאגר הנתונים. למילוי חוסרים (backfill) של האינדקס, שלח את כל בקשות להוספה לאינדקס באמצעות הנכס החדש, אבל לא נכס ישן, כי זה יוביל לספירה כפולה של התאמות שאילתה.
- במהלך מילוי החוסרים (backfill) של ההוספה לאינדקס, צריך לחפש את הנכס החדש ואז ברירת המחדל של הנכס הישן כדי למנוע התנהגות לא עקבית.
- בסיום המילוי החוסרי, מריצים שאילתות בדיקה כדי לאמת.
מוחקים את הנכס הישן. שליחת בקשה נוספת UpdateSchema בקשה ללא שם הנכס הישן ולהפסיק להשתמש בנכס הישן השם בבקשות עתידיות להוספה לאינדקס.
מעבירים את כל השימושים בנכס הישן לנכס החדש. לדוגמה, אם משנים את שם הנכס מיוצר למחבר, צריך לעדכן את השאילתה כדי להשתמש במחבר במקום שבו הוא הפנה בעבר ליוצר או ליוצרת.
ב-Cloud Search נשמר תיעוד של כל נכס או אובייקט שנמחקו למשך 30 ימים להגנה מפני שימוש חוזר שעלול לגרום לתוצאות לא צפויות בהוספה לאינדקס. במהלך 30 הימים האלו, עליך להפסיק את כל השימוש ב אובייקט או נכס, כולל השמטה שלהם מבקשות עתידיות לאינדקס. כך תוכלו להבטיח שאם בשלב מאוחר יותר תחליטו להחזיר את הנכס הזה, או ניתן לעשות זאת באופן שיאפשר לשמור על נכונות האינדקס.
היכרות עם מגבלות הגודל
ב-Cloud Search יש מגבלות על הגודל של סכימות ואובייקטים של נתונים מובְנים. המגבלות האלה:
- המספר המקסימלי של אובייקטים ברמה העליונה הוא 10 אובייקטים.
- העומק המקסימלי של היררכיית נתונים מובְנים הוא 10 רמות.
- המספר הכולל של שדות באובייקט מוגבל ל-1,000. שכולל את מספר השדות הראשוניים ואת הסכום של מספר בכל אובייקט בתוך אובייקט.
השלבים הבאים
אפשר לנסות את הפתרונות הבאים:
יוצרים ממשק חיפוש כדי לבדוק את הסכימה.
לכוונן את הסכימה כדי לשפר את איכות החיפוש.
ללמוד איך להשתמש סכימה
_dictionaryEntry
להגדרה מילים נרדפות למונחים נפוצים בחברה שלכם. כדי להשתמש_dictionaryEntry
מתייחסים הגדרת מילים נרדפות.יוצרים מחבר.