# מערך שיעור: text מול keyword📋 מערך מרצה

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

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

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

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

---

## מהלך השיעור

| חלק בשיעור | משך | הערות ודגשים |
| --- | --- | --- |
| פתיחה וחיבור | 5 דקות | הזכירו: name=text, category=keyword מהשיעור הקודם — "למה?" |
| הרעיון: text + Tokenization | 15 דקות | פיצול למילים, הדגימו חיפוש חלקי מוצלח |
| הרעיון: keyword | 15 דקות | שלם ומדויק, הדגימו 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) והריצו שוב — הראו את התוצאה הנכונה, קטגוריה שלמה אחת.
