משך: 2 שעות אקדמיות (90 דקות).

מטרת השיעור: הסטודנטים ישלטו בשאילתות הבסיסיות וישלבו אותן עם bool.

בסוף השיעור הסטודנטים צריכים: לכתוב match/term/range נפרדים, לשלב אותם עם bool, ולהסביר את ההבדל בין must ל-filter.

דגש קריטי: ההבדל must/filter (השפעה על דירוג מול לא) הוא הנקודה העדינה ביותר בשיעור — תנו לה זמן נפרד.


מהלך השיעור

חלק בשיעורמשךהערות ודגשים
פתיחה וחיבור5 דקותחזרה קצרה על match/term מהשיעורים הקודמים
range15 דקותטווחים מספריים ותאריכים
הרעיון: bool20 דקותmust/should/must_not — קישרו ל-&/
must מול filter20 דקותהבדל בדירוג וביצועים
הדגמה חיה: שאילתה משולבת מלאה20 דקותכל הרכיבים יחד
תרגול מודרך10 דקותתרגיל 1+2

דגשים להעברת השיעור

  • קישרו bool ל-&/| מיחידת Pandas ול-Where מורכב ב-LINQ — זה עוזר לסטודנטים לזהות שהם כבר מכירים את הלוגיקה, רק לומדים תחביר שלישי.
  • must מול filter דורש הסבר מפורש עם דוגמה — “שם המוצר תואם” משפיע על כמה התוצאה רלוונטית (must); “מחיר עד 500” הוא רק כן/לא (filter).
  • הדגמה חיה של שאילתה משולבת מלאה (עם must+filter+must_not יחד) חשובה כי זה מה שסטודנטים יצטרכו לכתוב בפרויקט המסכם.

מושגים

match — חיפוש חכם על text. term — התאמה מדויקת על keyword. range — סינון לפי טווח. bool — שילוב תנאים: must/should/must_not/filter.


תרגיל חשיבה

שאלת פתיחה: “אתם מחפשים מוצרים עם ‘נעליים’ בשם, אבל רק בטווח מחיר מסוים. למה תשימו את חיפוש השם ב-must ואת טווח המחיר ב-filter, ולא שניהם באותו מקום?”

מהלך: הובילו לתובנה: “נעליים” בשם הוא תנאי שיכול להיות יותר או פחות רלוונטי (מוצר עם “נעליים” פעמיים בשם רלוונטי יותר מאחד עם פעם אחת) — שייך ל-must, משפיע על הדירוג. טווח מחיר הוא בינארי לגמרי — או שהמוצר בטווח או שלא, אין “יותר או פחות” — שייך ל-filter, וגם מהיר יותר כי Elasticsearch יכול לשמור אותו ב-cache.

מה המרצה מראה בסוף: הריצו את אותה שאילתה פעמיים — פעם עם טווח המחיר ב-must ופעם ב-filter — אם אפשר, השוו את ה-Relevance Score (_score) של התוצאות בין השתי הגרסאות, כדי להראות שהמיקום (must/filter) משפיע בפועל על הניקוד, לא רק על התוצאה הבינארית.