חיפוש עם היבטים מאפשר לכם לצרף מידע קטגורי למסמכים. פילטר הוא צמד מאפיין/ערך. לדוגמה, לפן בשם size יכולים להיות הערכים small, medium ו-large.
כשמשתמשים בפילוח עם חיפוש, אפשר לאחזר מידע סיכום שיעזור לצמצם שאילתה ולעבור לפרטים בתוצאות בסדרת שלבים.
התכונה הזו שימושית באפליקציות כמו אתרי קניות, שבהן אתם רוצים להציע ללקוחות קבוצה של מסננים כדי לצמצם את המוצרים שהם רוצים לראות.
הנתונים המצטברים של היבט מסוים מראים את הפיזור של הערכים של היבט. לדוגמה, הפן 'גודל' עשוי להופיע ברבים מהמסמכים בסט התוצאות. הנתונים המצטברים של הפן הזה יכולים להראות שהערך small הופיע 100 פעמים, הערך medium הופיע 300 פעמים והערך large הופיע 250 פעמים. כל זוג של מאפיין/ערך מייצג קבוצת משנה של מסמכים בתוצאת השאילתה. מפתח, שנקרא שיפור, משויך לכל זוג. אפשר לכלול שאילתות לחידוד כדי לאחזר מסמכים שתואמים למחרוזת השאילתה ושכוללים את ערכי ההיבטים שמתאימים לחידוד אחד או יותר.
כשמבצעים חיפוש, אפשר לבחור אילו מאפיינים לאסוף ולהציג עם התוצאות, או להפעיל את האפשרות 'גילוי מאפיינים' כדי לבחור באופן אוטומטי את המאפיינים שמופיעים הכי הרבה פעמים במסמכים.
הוספת היבטים למסמך
מוסיפים היבטים למסמך לפני שמוסיפים את המסמך לאינדקס. מבצעים את הפעולה הזו באותו הזמן שבו מציינים את השדות של המסמך:
פאסטה דומה לשדה במסמך: יש לה שם והיא מקבלת ערך אחד.
שמות של היבטים פועלים לפי אותם כללים כמו שדות של מסמכים: השמות הם תלויי-רישיות ויכולים להכיל רק תווים מסוג ASCII. הם חייבים להתחיל באות ויכולים להכיל אותיות, ספרות או קו תחתון. האורך המקסימלי של השם הוא 500 תווים.
הערך של מאפיין יכול להיות מחרוזת אטומית (באורך של עד 500 תווים) או מספר (ערך נקודה צפה בדיוק כפול, בין -2,147,483,647 לבין 2,147,483,647).
אפשר להקצות כמה ערכים לפן במסמך אחד על ידי הוספת פן עם אותו שם וסוג כמה פעמים, עם ערך שונה בכל פעם.
אין הגבלה על מספר הערכים שיכולים להיות בפן. אין גם הגבלה על מספר ההיבטים שאפשר להוסיף למסמך או על מספר ההיבטים עם שמות ייחודיים באינדקס.
שימו לב: בכל פעם שמשתמשים בפאסטה, אפשר להזין ערך אטומי או מספרי. אפשר לצרף פאסטה עם השם 'גודל' למסמך אחד עם ערך המחרוזת 'קטן', ולמסמך אחר עם הערך המספרי 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. לכל פן שהופיע במסמך שתואם לשאילתה תהיה תוצאה אחת ברשימה. לכל תוצאה יופיעו:
- שם ההיבט
- רשימה של הערכים הנפוצים ביותר של ההיבט. לכל ערך יש ספירה משוערת של מספר הפעמים שהוא הופיע ומפתח לסינון התוצאות שאפשר להשתמש בו כדי לאחזר את המסמכים שתואמים לשאילתה הזו ולערך ההיבט.
שימו לב שרשימת הערכים תכלול את מחרוזת הפנים וגם את הערכים המספריים שלה. אם הפנים זוהו אוטומטית, הערכים המספריים שלה יוחזרו כטווח יחיד [min max). אם ביקשתם במפורש פנים מספריות עם טווח אחד או יותר בשאילתה, הרשימה תכיל טווח סגור-פתוח אחד [start end) לכל טווח.
יכול להיות שרשימת הערכים של ההיבטים לא תכלול את כל הערכים שנמצאו במסמכים, כי אפשרויות השאילתה קובעות כמה מסמכים ייבדקו וכמה ערכים יוחזרו.
אפשר לקרוא את המידע המצטבר של כל היבט מתוצאות החיפוש:
query = search.Query(...)
results = index.search(query)
for facet_info in results.facets:
...
לדוגמה, יכול להיות ששאילתה מצאה מסמכים שכללו היבט (facet) של 'גודל' עם ערכי מחרוזת וערכים מספריים. התוצאה של ההיבט הזה תיראה כך:
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, שאפשר להשתמש בה בשאילתה מאוחרת יותר כדי לאחזר את המסמכים שתואמים לשם ולערך של הפן הזה בתוצאה.
שימוש בהיבטים לסינון או לצמצום של שאילתה
אפשר להשתמש בפרמטר ה-refinement שמשויך לכל FacetResultValue כדי לצמצם עוד יותר את התוצאות כך שיכללו רק מסמכים עם ערכי הפנים האלה. כדי לשפר את השאילתות באמצעות אחד או יותר מהמפתחות האלה, מעבירים אותם לאובייקט השאילתה:
query = search.Query(..., facet_refinements=[refinement_key1, refinement_key2, refinement_key3])
אפשר לשלב בין פעולות צמצום לבין פנים שונות אחת או יותר באותה בקשה. כל פעולות הצמצום ששייכות לאותה פן משולבות באמצעות OR. פעולות צמצום של פנים שונות משולבות באמצעות AND.
אפשר גם ליצור מפתח FacetRefinement מותאם אישית באופן ידני. מידע נוסף מופיע במאמרי העזרה בנושא הכיתה.