סכימה של Google Cloud Search היא מבנה JSON שמגדיר את האובייקטים, המאפיינים והאפשרויות לשימוש באינדקס ובשאילתות של הנתונים. מחבר התוכן שלכם קורא נתונים ממאגר הנתונים, ועל סמך הסכימה הרשומה, בונה את הנתונים ומוסיף אותם לאינדקס.
ניתן ליצור סכימה על ידי ציון אובייקט סכימת JSON ל-API ולאחר מכן רישום שלו. כדי שתוכלו להוסיף את הנתונים לאינדקס, עליכם לרשום אובייקט סכימה לכל אחד מהמאגרים שלכם.
מסמך זה עוסק ביסודות יצירת הסכימה. מידע על כוונון הסכימה לשיפור חוויית החיפוש זמין במאמר שיפור איכות החיפוש.
יצירה של סכימה
בהמשך מפורטת רשימה של השלבים ליצירת הסכימה ב-Cloud Search:
- זיהוי התנהגות משתמשים צפויה
- הפעלה של מקור נתונים
- יצירת סכימה
- השלמה של סכימה לדוגמה
- רישום הסכימה
- הוספת הנתונים לאינדקס
- בדיקת הסכימה
- כוונון הסכימה
זיהוי התנהגות משתמשים צפויה
חיזוי סוגי השאילתות שהמשתמשים שלך מבצעים עוזר להנחות את האסטרטגיה ליצירת הסכימה.
לדוגמה, כאשר מפיקים שאילתות לגבי מסד נתונים של סרטים, ייתכן שאתם תצפו שמשתמש יבצע שאילתה כמו "Show me all movies with Star Roardford" (הצגת כל הסרטים בכיכובו של רוברט רדפורד). לכן הסכימה שלכם חייבת לתמוך בתוצאות של שאילתות המבוססות על 'כל הסרטים עם משתמש ספציפי'.
כדי להגדיר את הסכימה כך שתשקף את דפוסי ההתנהגות של המשתמשים, מומלץ לבצע את המשימות הבאות:
- מעריכים קבוצה מגוונת של שאילתות ממשתמשים שונים.
- זיהוי האובייקטים שעשויים לשמש בשאילתות. אובייקטים הם קבוצות לוגיות של נתונים קשורים, כגון סרט במסד נתונים של סרטים.
- תוכלו לזהות את המאפיינים והערכים שמרכיבים את האובייקט, ולהשתמש בהם בשאילתות. מאפיינים הם המאפיינים שאפשר להוסיף לאינדקס של האובייקט; הם יכולים לכלול ערכים מהדור הישן או אובייקטים אחרים. למשל, לאובייקט של סרט יכולים להיות מאפיינים כמו שם הסרט ותאריך ההשקה שלו כערכים בסיסיים. האובייקט של הסרט עשוי גם לכלול אובייקטים אחרים, כגון חברי צוות, בעלי מאפיינים משלהם, כגון שמם או תפקידם.
- דוגמאות לערכים חוקיים של מאפיינים. ערכים הם הנתונים בפועל שנוספו לאינדקס עבור נכס מסוים. לדוגמה, כותר של סרט אחד במסד הנתונים שלכם עשוי להיות "ריידים של העפר האבוד".
- קביעת אפשרויות המיון והדירוג הרצויות על ידי המשתמשים שלך. לדוגמה, כששואלים סרטים, ייתכן שהמשתמשים ירצו למיין בסדר כרונולוגי ולדרג לפי דירוג קהל, ולא יצטרכו למיין אותם בסדר אלפביתי לפי שם.
- (אופציונלי) חשבו אם אחד מהנכסים שלכם מייצג הקשר ספציפי יותר שבו המשתמשים יכולים לבצע חיפושים, כמו תפקיד או מחלקה של המשתמשים, כדי שאפשר יהיה לספק הצעות להשלמה אוטומטית על סמך ההקשר. לדוגמה, לאנשים שמחפשים מסד נתונים של סרטים, המשתמשים עשויים להתעניין רק בז'אנר מסוים של סרטים. המשתמשים יגדירו מה הז'אנר שהם רוצים להחזיר, כנראה כחלק מפרופיל המשתמש שלהם. לאחר מכן, כשמשתמש מתחיל להקליד שאילתה על סרטים, המערכת תציע רק סרטים בז'אנר המועדף, כמו 'סרטי פעולה', כחלק מהצעות ההשלמה האוטומטית.
- כדאי להכין רשימה של האובייקטים, המאפיינים והערכים האלה שבהם אפשר להשתמש בחיפושים. (לפרטים על אופן השימוש ברשימה זו, עיינו בקטע הגדרת אפשרויות אופרטורים).
הפעלה של מקור הנתונים
מקור נתונים מייצג את הנתונים ממאגר שנוספו לאינדקס ונשמר ב-Google Cloud. במאמר ניהול מקורות נתונים של צד שלישי מוסבר איך להפעיל אותו.
תוצאות החיפוש של המשתמש מוחזרות ממקור הנתונים. כשמשתמש לוחץ על תוצאת חיפוש, מערכת Cloud Search מפנה את המשתמש לפריט עצמו באמצעות כתובת ה-URL שצוינה בבקשת ההוספה לאינדקס.
הגדרת האובייקטים
היחידה הבסיסית של נתונים בסכימה היא אובייקט, שנקרא גם "אובייקט סכימה", שהוא מבנה לוגי של נתונים. במסד נתונים של סרטים, אחד מהמבנה הלוגי של הנתונים הוא "סרט". אובייקט נוסף יכול להיות "אדם" שמייצג את צוות השחקנים והצוות שמעורבים בסרט.
לכל אובייקט בסכימה יש סדרה של מאפיינים המתארים את האובייקט, כגון השם ומשך הזמן של סרט, או השם ותאריך הלידה של אדם. מאפיינים של אובייקט יכולים לכלול ערכים פרימיטיביים או אובייקטים אחרים.
איור 1 מציג את האובייקטים של הסרט והאדם ואת הנכסים המשויכים אליהם.

סכימת 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
– מציין שהנכס יכול לשמש למיון. זה לא יכול להיות נכון לגבי נכסים שאפשר לחזור עליהם. לדוגמה, אפשר למיין את תוצאות הסרטים לפי תאריך השקה או דירוג קהל.isFacetable
– מציין שהנכס יכול לשמש ליצירת היבטים. היבט משמש לצמצום תוצאות החיפוש שבהן המשתמש רואה את התוצאות הראשוניות, ולאחר מכן מוסיף קריטריונים או מאפיינים כדי לצמצם עוד יותר את התוצאות האלו. האפשרות הזו לא יכולה להיות כן עבור נכסים שסוג האובייקט שלהם הוא אובייקט, והמאפייןisReturnable
צריך להיות True כדי להגדיר את האפשרות הזו. לבסוף, האפשרות הזו נתמכת רק עבור נכסים enum , boolean וטקסט. לדוגמה, בסכימה לדוגמה, יכול להיות שנגדיר אתgenre
,actorName
,userRating
וגם אתmpaaRating
כדי להשתמש בהם לחידוד אינטראקטיבי של תוצאות החיפוש.isWildcardSearchable
מציין שהמשתמשים יכולים לבצע חיפוש עם תווים כלליים לחיפוש עבור הנכס הזה. האפשרות הזו זמינה רק בנכסי טקסט. האופן שבו חיפוש עם תווים כלליים לחיפוש פועל בשדה הטקסט תלוי בערך שמוגדר בשדה exactMatchWithOperator. אםexactMatchWithOperator
מוגדר ל-true
, ערך הטקסט מסומן כערך אטומי אחד ומתבצע חיפוש איתו עם תווים כלליים. לדוגמה, אם ערך הטקסט הואscience-fiction
, התו הכללי לחיפושscience-*
יתאים לו. אם הערך שלexactMatchWithOperator
הואfalse
, הערך של הטקסט הוא אסימון ואכן מתבצע חיפוש עם תווים כלליים לכל אסימון. לדוגמה, אם ערך הטקסט הוא 'מדע בדיוני', תו החיפוש הכללי לחיפושsci*
אוfi*
יתאים לפריט, אבלscience-*
לא יתאים לו.
הפרמטרים הכלליים של פונקציונליות החיפוש הם כולם ערכים בוליאניים. לכולם יש ערך ברירת מחדל של false
, ויש להגדיר אותם כ-true
כדי להשתמש בהם.
בטבלה הבאה מוצגים הפרמטרים הבוליאניים שהוגדרו כ-true
לכל המאפיינים של אובייקט movie
:
מאפיין (property) | isReturnable |
isRepeatable |
isSortable |
isFacetable |
isWildcardSearchable |
---|---|---|---|---|---|
movieTitle |
נכון | נכון | |||
releaseDate |
נכון | נכון | |||
genre |
נכון | נכון | נכון | ||
duration |
נכון | ||||
actorName |
נכון | נכון | נכון | נכון | |
userRating |
נכון | נכון | |||
mpaaRating |
נכון | נכון |
גם genre
וגם actorName
מוגדרים כ-isRepeatable
כ-true
מפני שלסרט יכול להיות יותר מז'אנר אחד, ולרוב יש בו יותר משחקן אחד. לא ניתן למיין נכס אם הוא ניתן לחזרה
או כשהוא כלול בתת-משימה שניתן לחזור עליה.
הגדרת סוג
בקטע העזר PropertyDefinition מפורט מספר xxPropertyOptions
עם הערך xx
מסוג ספציפי, כגון boolean
. כדי להגדיר את סוג הנתונים של הנכס, צריך להגדיר את האובייקט המתאים של סוג הנתונים. ההגדרה של אובייקט מסוג נתונים עבור נכס קובעת את סוג הנתונים של אותו נכס. לדוגמה, הגדרה של textPropertyOptions
בנכס movieTitle
מציינת ששם הסרט הוא מסוג טקסט. קטע הקוד הבא מציג את המאפיין movieTitle
עם textPropertyOptions
שמגדיר את סוג הנתונים.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
...
},
...
},
לנכס יכול להיות רק סוג אחד של נתונים משויכים. לדוגמה, בסכימת הסרטים שלנו, releaseDate
יכול להיות רק תאריך (למשל, 2016-01-13
) או מחרוזת
(למשל, January 13, 2016
), אבל לא את שתיהן.
לפניכם רשימה של אובייקטים של סוג נתונים לציון סוגי הנתונים של הנכסים בסכימה של הסרט לדוגמה:
מאפיין (property) | אובייקט מסוג נתונים |
---|---|
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" },
...
},
...
}
לפניכם האפשרויות הנוספות שספציפיות לסוג, המשמשות בסכימה לדוגמה:
מאפיין (property) | סוג | אפשרויות ספציפיות לסוג |
---|---|---|
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", שם האופרטור צריך להיות "name".
אפשר להשתמש באותו שם אופרטור בכמה נכסים, כל עוד כל הנכסים נבדלים לאותו סוג. כשאתם משתמשים בשם של אופרטור משותף במהלך שאילתה, כל הנכסים שמשתמשים בשם המפעיל הזה מאוחזרים. לדוגמה, נניח שלאובייקט הסרט היו 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
שהוגדר בתור 'כותרת' (Title).
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": {
"operatorName": "title"
}
},
"displayOptions": {
"displayLabel": "Title"
}
},
בהמשך נמצאים הערכים displayLabel
לכל המאפיינים של movie
האובייקט בסכימה לדוגמה:
מאפיין (property) | displayLabel |
---|---|
movieTitle |
Title |
releaseDate |
Release date |
genre |
Genre |
duration |
Run length |
actorName |
Actor |
userRating |
Audience score |
mpaaRating |
MPAA rating |
(אופציונלי) מוסיפים קטע בשם suggestionFilteringOperators[]
בסוף כל קטע propertyDefinition
יש קטע אופציונלי suggestionFilteringOperators[]
. השתמשו בקטע הזה כדי להגדיר נכס המשמש לסינון הצעות להשלמה אוטומטית. לדוגמה, אפשר להגדיר את האופרטור של genre
לסינון הצעות לפי ז'אנר הסרט המועדף על המשתמש. לאחר מכן, כשהמשתמש יזין את שאילתת החיפוש שלו, רק הסרטים שתואמים לז'אנר המועדף יוצגו כחלק מהצעות ההשלמה האוטומטית.
רישום הסכימה
כדי שנתונים מובְנים יוחזרו משאילתות Cloud Search, צריך לרשום את הסכימה בשירות הסכימה של Cloud Search. רישום סכימה מחייב את מזהה מקור הנתונים שקיבלתם בשלב הפעלת מקור הנתונים.
בעזרת המזהה של מקור הנתונים, שולחים UpdateSchema בקשה לרישום הסכימה.
כפי שמתואר בדף העדכון לסכימה, רשמו את בקשת ה-HTTP הבאה לרישום הסכימה:
PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema
גוף הבקשה צריך לכלול את הפרטים הבאים:
{ "validateOnly": // true or false, "schema": { // ... Your complete schema object ... } }
משתמשים באפשרות validateOnly
כדי לבדוק את החוקיות של הסכימה מבלי לרשום אותה בפועל.
הוספת הנתונים שלך לאינדקס
אחרי שרושמים את הסכימה, צריך לאכלס את מקור הנתונים באמצעות קריאות ל-index. לרוב, הוספה לאינדקס מתבצעת במחבר התוכן.
באמצעות סכימת הסרט, בקשה להוספה ב-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 שמאשרת רק משתמש לבדיקה, כדי שמשתמשים אחרים לא יראו את הנתונים האלה בתוצאות החיפוש.
כדי ליצור ממשק חיפוש לאימות שאילתות חיפוש, עיינו במאמר ממשק החיפוש
בקטע הזה מוצגות כמה שאילתות לדוגמה שאפשר להשתמש בהן כדי לבדוק סכימת סרטים.
בדיקה באמצעות שאילתה כללית
שאילתה כללית מחזירה את כל הפריטים במקור הנתונים שמכילים מחרוזת ספציפית. אם משתמשים בממשק חיפוש, ניתן להריץ שאילתה כללית על מקור נתונים של סרט על ידי הקלדת המילה "טיטאניק" ולחיצה על חזרה. יש להחזיר את כל הסרטים עם המילה 'טיטאניק' לתוצאות החיפוש.
בדיקה באמצעות אופרטור
הוספת אופרטור לשאילתה מגבילה את התוצאות לפריטים שתואמים לערך האופרטור הזה. לדוגמה, תוכלו להשתמש באופרטור actor
כדי למצוא את כל הסרטים שבהם מופיע שחקן ספציפי. בממשק המשתמש, תוכלו לבצע את שאילתת האופרטור הזו על ידי הקלדת זוג operator=value, כמו "actor:Zane", ולחיצה על Return. כל הסרטים עם Zane כשחקן אמורים לחזור בתוצאות החיפוש.
כוונון הסכימה
אחרי השימוש בסכימה ובנתונים, תוכלו להמשיך לבדוק מה עובד ומה לא עובד למשתמשים. מומלץ לשנות את הסכימה למצבים הבאים:
- הוספת לאינדקס שדה שלא נוסף לאינדקס בעבר. לדוגמה, יכול להיות שהמשתמשים שלכם יחפשו שוב ושוב סרטים שמבוססים על שם הבמאי, כדי לשנות את הסכימה כך שתתמוך בשם הבמאי כמפעיל.
- שינוי שמות של אופרטורים לחיפוש על סמך משוב המשתמשים. המטרה של שמות המשתמשים היא להיות ידידותיים למשתמש. אם המשתמשים שלכם "זוכרים" באופן עקבי את שם המפעיל הלא נכון, כדאי לשנות אותו.
הוספה מחדש לאינדקס לאחר שינוי סכימה
שינוי הערכים הבאים בסכמה אינו מחייב אותך להוסיף מחדש את הנתונים שלך לאינדקס. אתם יכולים פשוט לשלוח בקשת UpdateSchema חדשה, והאינדקס שלכם ימשיך לפעול:
- שמות האופרטורים.
- מספר מינימלי וערכי מקסימום.
- דירוג של מספר שלם ומספר שלם.
- אפשרויות רענון.
- אפשרויות תצוגה.
בנוגע לשינויים הבאים, הנתונים שנוספו בעבר לאינדקס ימשיכו לפעול בהתאם לסכימה שנרשמה בעבר. עם זאת, אם אתם רוצים לראות את השינויים שמבוססים על הסכימה המעודכנת, תצטרכו להוסיף אותם מחדש לאינדקס.
- הוספה או הסרה של נכס או אובייקט חדש
- שינוי של
isReturnable
,isFacetable
אוisSortable
מהערךfalse
לערךtrue
.
יש להגדיר את המאפיין isFacetable
או את המאפיין isSortable
לערך true
רק אם אתם משתמשים בתרחיש לדוגמה ברור.
לסיום, כשמעדכנים את הסכימה על ידי סימון נכס isSuggestable
, צריך להוסיף מחדש את הנתונים לאינדקס, מה שיגרום לעיכוב בשימוש בהשלמה האוטומטית של הנכס.
שינויים אסורים בנכסים
חלק מהשינויים בסכימה אינם מותרים, גם אם אתם מוסיפים מחדש את הנתונים לאינדקס, מפני שהם יגרמו לפגיעה באינדקס או להפקת תוצאות חיפוש לא עקביות או לא עקביות. השינויים כוללים:
- סוג הנתונים של הנכס.
- שם הנכס.
- ההגדרה
exactMatchWithOperator
. - ההגדרה
retrievalImportance
.
עם זאת, יש דרך לעקוף את ההגבלה הזו.
שינוי סכימה מורכב
כדי למנוע שינויים שיובילו לתוצאות חיפוש גרועות או לאינדקס חיפוש לא תקין, Cloud Search מונע סוגים מסוימים של שינויים בבקשות של UpdateSchema אחרי הוספה לאינדקס של המאגר. לדוגמה, לא ניתן לשנות את סוג הנתונים או את שם הנכס לאחר הגדרתם. אי אפשר לבצע את השינויים האלה דרך בקשה פשוטה של UpdateSchema, גם אם תוסיפו מחדש את הנתונים לאינדקס.
במקרים שבהם צריך לבצע שינוי אסור בסכמה, בדרך כלל ניתן לבצע מספר שינויים מותרים עם אותה השפעה. באופן כללי, כדי לעשות את זה צריך להעביר נכסים שנוספו לאינדקס מהגדרת אובייקטים ישנה יותר להגדרת דומיין חדשה, ואז לשלוח בקשה להוספה לאינדקס שמשתמשת רק בנכס החדש.
בשלבים הבאים ניתן לראות איך לשנות את סוג הנתונים או את שם הנכס:
- מוסיפים נכס חדש להגדרת האובייקט בסכימה. השתמשו בשם אחר מהנכס שאתם רוצים לשנות.
- שולחים את הבקשה ל-UpdateSchema עם ההגדרה החדשה. זכרו לשלוח את כל הסכימה, כולל הנכס החדש והישן, בבקשה.
ממלאים מחדש את האינדקס ממאגר הנתונים. כדי למלא את האינדקס, שולחים את כל הבקשות להוספה לאינדקס באמצעות הנכס החדש, אבל לא מהנכס הישן, מפני שהדבר יוביל לספירות כפולות של התאמות.
- במהלך המילוי החוזר של ההוספה לאינדקס, כדאי לחפש את הנכס החדש ולהוסיף אותו כברירת מחדל לנכס הישן כדי להימנע מהתנהגות לא עקבית.
- לאחר השלמת המילוי החוזר, מריצים שאילתות בדיקה כדי לאמת.
מוחקים את הנכס הישן. עליכם לשלוח בקשת UpdateSchema נוספת בלי שם הנכס הישן, ולהפסיק להשתמש בשם הנכס הישן בבקשות עתידיות להוספה לאינדקס.
להעביר כל שימוש בנכס הישן אל הנכס החדש. לדוגמה, אם משנים את שם הנכס מהיוצר למחבר, צריך לעדכן את קוד השאילתה כך שישתמש במחבר במקום שבו הוא הופנה בעבר ליוצר.
ב-Cloud Search נשמר תיעוד של נכס או אובייקט שנמחק במשך 30 יום כדי להגן מפני שימוש חוזר שיגרום לתוצאות הוספה לא צפויות לאינדקס. תוך 30 יום אתם אמורים להפסיק להשתמש בכל מטרה או נכס שנמחקו, כולל השמטתם מבקשות אינדקס עתידיות. כך מובטח שאם תחליטו להפעיל מחדש את הנכס או את האובייקט, תוכלו לעשות זאת באופן שישמור על נכונות האינדקס.
הכרת מגבלות הגודל
ב-Cloud Search נקבעות הגבלות על גודל וסכימות של נתונים מובְנים. המגבלות האלה הן:
- המספר המרבי של אובייקטים ברמה העליונה הוא 10 אובייקטים.
- העומק המקסימלי של היררכיית הנתונים המובְנים הוא 10 רמות.
- המספר הכולל של השדות באובייקט מוגבל ל-1,000, והוא כולל את מספר השדות החדשים ואת סכום השדות בכל אובייקט מקונן.
השלבים הבאים
יש כמה דברים שאפשר לעשות:
צרו ממשק חיפוש כדי לבדוק את הסכימה.
כדאי לשפר את איכות הסכימה כדי לשפר את איכות החיפוש.
כאן תוכלו ללמוד איך למנף את הסכימה
_dictionaryEntry
כדי להגדיר מילים נרדפות למונחים נפוצים בחברה שלכם. כדי להשתמש בסכימה_dictionaryEntry
, קראו את המאמר הגדרת מילים נרדפות.יוצרים מחבר.