חיפוש עם היבטים מאפשר לכם לצרף מידע קטגורי למסמכים. פילטר הוא צמד מאפיין/ערך. לדוגמה, לפן בשם size יכולים להיות הערכים small, medium ו-large.
כשמשתמשים בפילוח עם חיפוש, אפשר לאחזר מידע סיכום שיעזור לצמצם שאילתה ולעבור לפרטים בתוצאות בסדרת שלבים.
התכונה הזו שימושית באפליקציות כמו אתרי קניות, שבהן אתם רוצים להציע ללקוחות קבוצה של מסננים כדי לצמצם את המוצרים שהם רוצים לראות.
הנתונים המצטברים של היבט מסוים מראים את הפיזור של הערכים של היבט. לדוגמה, הפן 'גודל' עשוי להופיע ברבים מהמסמכים בסט התוצאות. הנתונים המצטברים של ההיבט הזה יכולים להראות שהערך small הופיע 100 פעמים, הערך medium הופיע 300 פעמים והערך large הופיע 250 פעמים. כל זוג של מאפיין/ערך מייצג קבוצת משנה של מסמכים בתוצאת השאילתה. מפתח, שנקרא שיפור, משויך לכל זוג. אפשר לכלול שאילתות לחידוד כדי לאחזר מסמכים שתואמים למחרוזת השאילתה ושכוללים את ערכי ההיבטים שמתאימים לחידוד אחד או יותר.
כשמבצעים חיפוש, אפשר לבחור אילו מאפיינים לאסוף ולהציג עם התוצאות, או להפעיל את האפשרות 'גילוי מאפיינים' כדי לבחור באופן אוטומטי את המאפיינים שמופיעים הכי הרבה פעמים במסמכים.
הוספת היבטים למסמך
מוסיפים היבטים למסמך לפני שמוסיפים את המסמך לאינדקס. מבצעים את הפעולה הזו באותו הזמן שבו מציינים את השדות של המסמך:
פאסטה דומה לשדה במסמך: יש לה שם והיא מקבלת ערך אחד.
שמות של היבטים פועלים לפי אותם כללים כמו שדות של מסמכים: השמות הם תלויי-רישיות ויכולים להכיל רק תווים מסוג ASCII. הם חייבים להתחיל באות ויכולים להכיל אותיות, ספרות או קו תחתון. השם לא יכול לכלול יותר מ-500 תווים.
הערך של פן יכול להיות מחרוזת אטומית (באורך של עד 500 תווים) או מספר (ערך נקודה צפה בדיוק כפול בין -2,147,483,647 לבין 2,147,483,647).
אפשר להקצות כמה ערכים לפן במסמך אחד על ידי הוספת פן עם אותו שם וסוג כמה פעמים, עם ערך שונה בכל פעם.
אין הגבלה על מספר הערכים שיכולים להיות בפן. אין גם הגבלה על מספר ההיבטים שאפשר להוסיף למסמך או על מספר ההיבטים עם שמות ייחודיים באינדקס.
חשוב לזכור: בכל פעם שמשתמשים בהיבט, אפשר להזין ערך אטומי או מספרי. אפשר לצרף היבט בשם size למסמך אחד עם ערך המחרוזת small ולמסמך אחר עם הערך המספרי 8. למעשה, אותו היבט יכול להופיע כמה פעמים באותו מסמך עם שני סוגי הערכים. אנחנו לא ממליצים להשתמש גם בערכי אטום וגם בערכי מספרים לאותו היבט, למרות שזה מותר.
כשמוסיפים פן למסמך, הוא מקבל סוג ספציפי, אבל בתוצאות החיפוש מוצגים כל הערכים שלו. לדוגמה, התוצאות של ההיבט size יכולות להראות שהיו 100 מקרים של הערך small, 150 מקרים של הערך medium ו-135 מקרים של ערכים מספריים בטווח [4, 8). לא מוצגים הערכים המספריים המדויקים והתפלגות התדירות שלהם.
כשמאחזרים מסמך באמצעות שאילתה, אי אפשר לגשת ישירות להיבטים ולערכים שלו. כפי שמוסבר בקטע הבא, אתם צריכים לבקש שהמידע על ההיבטים יוחזר עם השאילתה.
שימוש בחיפוש עם היבטים כדי לאחזר מידע על היבטים
אתם יכולים לבקש מהקצה העורפי של החיפוש לגלות את ההיבטים שבהם אתם משתמשים הכי הרבה. התהליך הזה נקרא גילוי אוטומטי של היבטים. אפשר גם לאחזר מידע על היבט באופן מפורש על ידי בחירת היבט לפי שם, או לפי שם וערך. אפשר לשלב בין שלושת סוגי האחזור של היבטים בשאילתה אחת.
הבקשה לקבלת מידע על פנים לא תשפיע על המסמכים שהשאילתה מחזירה. זה יכול להשפיע על הביצועים. ביצוע חיפוש עם היבטים עם עומק ברירת המחדל של 1,000 זהה להגדרת המגבלה של פונקציית הניקוד של אפשרויות המיון ל-1,000.
גילוי אוטומטי של היבטים
התכונה 'גילוי היבטים אוטומטי' מחפשת את ההיבטים שמופיעים הכי הרבה פעמים במסמכים. לדוגמה, נניח שהמסמכים שתואמים לשאילתה שלכם כוללים היבט 'צבע' שמופיע 5 פעמים עם הערך 'אדום', 5 פעמים עם הערך 'לבן' ו-5 פעמים עם הצבע 'כחול'. במאפיין הזה יש ספירה כוללת של 15. לצורך גילוי, הוא ידורג גבוה יותר ממאפיין אחר, 'גוון', שמופיע באותם מסמכים תואמים 6 פעמים עם הערך 'כהה' ו-7 פעמים עם הערך 'בהיר'.
כדי להפעיל את האפשרות 'גילוי היבטים', צריך להגדיר אותה בשאילתה:
כשמאחזרים היבטים באמצעות חיפוש, כברירת מחדל יוחזרו רק 10 הערכים השכיחים ביותר של היבט.
אפשר להגדיל את המגבלה הזו עד 100 באמצעות הפרמטר FacetOptions discovery_limit.
שימו לב: המטרה של גילוי פנים אוטומטי היא לא להחזיר את כל הפנים האפשריות ואת הערכים שלהן. ההיבטים שמוחזרים מהחיפוש עשויים להיות שונים מהרצה להרצה. אם רוצים להשתמש בקבוצה קבועה של היבטים, צריך להשתמש בפרמטר return_facets בשאילתה.
ערכי מחרוזת יוחזרו בנפרד. הערכים המספריים של היבט שזוהה מוחזרים בטווח יחיד [min max). אפשר לבדוק את הטווח הזה וליצור טווח משנה קטן יותר לשאילתה מאוחרת יותר.
בחירת היבטים לפי שם
כדי לאחזר מידע על היבט לפי השם שלו בלבד, מוסיפים return_facetsפרמטר
לשאילתה, כולל
שם ההיבט ברשימה:
כשמאחזרים היבטים לפי שם, כברירת מחדל יוחזרו רק 10 הערכים הנפוצים ביותר של היבט.
אפשר להגדיל את המכסה הזו עד 20 באמצעות הפרמטר FacetOptions
discovery_value_limit.
בחירת היבטים לפי שם וערך
כדי לאחזר מידע רק על ערכים מסוימים של היבט, מוסיפים פרמטר return_facets שכולל אובייקט FacetRequest עם רשימת ערכים:
הערכים בתוך FacetRequest חייבים להיות מאותו סוג: רשימה של ערכי מחרוזת או, אם מדובר במספרים, רשימה של FacetRanges, שהם מרווחים שסגורים משמאל (התחלה) ופתוחים מימין (סוף). אם הפנים שלכם כוללות שילוב של ערכים מסוג מחרוזת ומסוג מספר, צריך להוסיף FacetRequests נפרד לכל אחד מהם.
אפשרויות
אפשר לשלוט בחיפוש עם סינון באמצעות הוספת הפרמטר facet_options לקריאה של שאילתה. הפרמטר הזה מקבל מופע יחיד של FacetOptions. אפשר להשתמש בפרמטר הזה כדי לשנות את התנהגות ברירת המחדל של חיפוש עם היבטים.
options = FacetOptions(discover_facet_limit=5,
discover_facet_value_limit=10,
depth=6000);
| פרמטר | תיאור | ברירת מחדל |
|---|---|---|
discover_facet_limit |
מספר המאפיינים שיוצגו אם האפשרות 'גילוי מאפיינים' מופעלת. אם הערך הוא 0, גילוי הפנים יושבת. | 10 |
discover_facet_value_limit |
מספר הערכים שיוחזרו לכל אחד מההיבטים המובילים שזוהו. | 10 |
depth |
המספר המינימלי של מסמכים בתוצאות השאילתה שצריך להעריך כדי לאסוף מידע על מאפיינים. | 1000 |
האפשרות depth חלה על כל שלושת סוגי הצבירה של מאפייני סינון: לפי שם, לפי שם וערך ולפי גילוי אוטומטי. האפשרויות האחרות מיועדות רק לגילוי אוטומטי.
שימו לב שעומק הפן בדרך כלל גדול בהרבה ממגבלת השאילתה. תוצאות ההיבטים מחושבות לפחות לעומק של מספר המסמכים.
אם הגדרתם את מגבלת הניקוד של אפשרויות המיון גבוהה יותר מהעומק, המערכת תשתמש במגבלת הניקוד.
אחזור תוצאות של היבטים
כשמשתמשים בפרמטרים של חיפוש עם היבטים בשאילתה, מידע מצטבר על ההיבטים מגיע עם תוצאת השאילתה עצמה.
בשאילתה תופיע רשימה של FacetResult.
בתוצאות החיפוש תופיע שורה אחת לכל היבט שהופיע במסמך שתואם לשאילתה. לכל תוצאה יופיעו:
- שם ההיבט
- רשימה של הערכים הכי נפוצים של ההיבט. לכל ערך יש ספירה משוערת של מספר הפעמים שהוא הופיע ומפתח לסינון התוצאות שאפשר להשתמש בו כדי לאחזר את המסמכים שתואמים לשאילתה ולערך הפן הזה.
שימו לב שרשימת הערכים תכלול את המחרוזת של הפן and ואת הערכים המספריים שלו. אם ההיבט זוהה אוטומטית, הערכים המספריים שלו מוחזרים כמרווח יחיד [min max). אם ביקשתם במפורש פן מספרי עם טווח אחד או יותר בשאילתה, הרשימה תכיל מרווח סגור-פתוח אחד [התחלה סוף) לכל טווח.
יכול להיות שרשימת ערכי הפנים לא תכלול את כל הערכים שנמצאים במסמכים, כי אפשרויות השאילתה קובעות כמה מסמכים ייבדקו וכמה ערכים יוחזרו.
אפשר לקרוא את המידע המצטבר של כל היבט מתוצאות החיפוש:
query = search.Query(...)
results = index.search(query)
for facet_info in results.facets:
...
לדוגמה, יכול להיות ששאילתה מצאה מסמכים שכללו היבט 'גודל' עם ערכי מחרוזת וערכים מספריים. ה-FacetResult של הפן הזה יורכב כך:
FacetResult(name='size', values=[
FacetResultValue(label='[8, 10)', 22, refinement=refinement_key),
FacetResultValue(label='small', 100, refinement=refinement_key),
FacetResultValue(label='medium', 300, refinement=refinement_key),
FacetResultValue(label='large', 250, refinement=refinement_key)])
הפרמטר label נוצר מערך של היבט. לערכים מספריים
label הוא הייצוג של טווח.
המחרוזת refinement_key היא מחרוזת בטוחה לשימוש באינטרנט או בכתובת URL, שאפשר להשתמש בה בשאילתה מאוחרת יותר כדי לאחזר את המסמכים שתואמים לשם ולערך של הפן הזה בתוצאה.
שימוש בהיבטים לסינון או לצמצום של שאילתה
אפשר להשתמש בסינון שמשויך לכל FacetResultValue כדי לצמצם עוד יותר את התוצאות כך שיכללו רק מסמכים עם ערכי הפנים האלה. כדי לשפר את השאילתות באמצעות אחד או יותר מהמפתחות האלה, מעבירים אותם לאובייקט השאילתה:
query = search.Query(..., facet_refinements=[refinement_key1, refinement_key2, refinement_key3])
אפשר לשלב בין מסננים של היבט אחד או יותר באותה בקשה. כל ההגדרות המדויקות ששייכות לאותו היבט משולבות באמצעות OR. הגדרות מדויקות של היבטים שונים משולבות באמצעות AND.
אפשר גם ליצור מפתח FacetRefinement מותאם אישית באופן ידני. מידע נוסף מופיע במאמרי העזרה בנושא הכיתה.