משך: 1.5 שעות אקדמיות (68 דקות).

מטרת השיעור: הסטודנטים יבינו מתי להשתמש ב-text ומתי ב-keyword, ויתקנו Mapping שגוי בפועל.

בסוף השיעור הסטודנטים צריכים: להסביר Tokenization בקצרה, לבחור נכון בין text ל-keyword לפי סוג השדה, ולהשתמש ב-fields למיפוי כפול.

דגש קריטי: הדגימו את ה"שבירה השקטה" בפועל — קיבוץ שמתפרק למילים בודדות — זו ההוכחה הכי משכנעת לחשיבות הבחירה הנכונה.


מהלך השיעור

חלק בשיעורמשךהערות ודגשים
פתיחה וחיבור5 דקותהזכירו: name=text, category=keyword מהשיעור הקודם — “למה?”
הרעיון: text + Tokenization15 דקותפיצול למילים, הדגימו חיפוש חלקי מוצלח
הרעיון: keyword15 דקותשלם ומדויק, הדגימו term query
הבעיה: בחירה הפוכה15 דקותקיבוץ על text — תוצאה שבורה, בשידור חי
fields — מיפוי משולב13 דקותname + name.keyword
תרגול מודרך5 דקותתרגיל 1

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

  • ה"שבירה השקטה" (בלי שגיאה, רק תוצאה מוזרה) היא הנקודה הכי חשובה בשיעור — סטודנטים צריכים להבין שElasticsearch לא “יזעיק” אותם על מיפוי שגוי, הם צריכים לזהות את זה בעצמם דרך תוצאות מוזרות.
  • אל תדלגו על הדגמת term על שדה text שנכשל — זו נקודת בלבול קלאסית (מצפים שtem ימצא, לא מוצא כלום).
  • fields (מיפוי משולב) שווה להציג כ"פתרון הנפוץ בפועל" — כמעט כל שדה טקסט חשוב בפרויקט אמיתי מקבל את שני המיפויים יחד.

מושגים

text — מנותח למילים, לחיפוש חכם. keyword — שלם ומדויק, לסינון/מיון/קיבוץ. Tokenization — פיצול טקסט למילים בודדות.


תרגיל חשיבה

שאלת פתיחה: “יצרתם Index של מוצרים עם category כ-text בטעות. אתם רוצים לדעת ‘כמה מוצרים בכל קטגוריה’. מה תראו כשתריצו קיבוץ, ולמה זה מוזר?”

מהלך: תנו לסטודנטים לנחש לפני ההדגמה. הובילו לתובנה: הקיבוץ יראה מילים בודדות מתוך שמות הקטגוריות (למשל “הנעלה” עשוי להישאר שלם אם זו מילה אחת, אבל “אלקטרוניקה ומחשבים” יתפרק ל"אלקטרוניקה", “ו”, “מחשבים” נפרדים) — לא קטגוריות שלמות והגיוניות.

מה המרצה מראה בסוף: הריצו בפועל קיבוץ על שדה category שהוגדר כ-text עם ערך רב-מילים (“אלקטרוניקה ומחשבים”) — הראו את הפירוק המוזר. אז שנו ל-keyword (עם Reindex) והריצו שוב — הראו את התוצאה הנכונה, קטגוריה שלמה אחת.