משתמש מקליד 'ноутбук', אבל בקטלוג יש פריטים עם 'лэптоп' ו-'notebook'. ללא מילים נרדפות, החיפוש מאבד עד 30% מהתוצאות הרלוונטיות – המשתמש עובר למתחרים. אנו מגדירים מילים נרדפות לחיפוש באופן מלא: מניתוח מילון ועד פריסה ויצירת פאנל ניהול. במהלך עבודתנו, יישמנו 15+ פרויקטים עם קטלוגים של עד 100,000 מוצרים, וההמרה עלתה בממוצע ב-15%. תקופת החזר השקעה – 2–3 חודשים.
כיצד מילים נרדפות משפיעות על רלוונטיות החיפוש
חיפוש עם מילים נרדפות מגביר המרה בכך שהוא מבטיח שהמשתמש ימצא את המוצר הנכון עם כל שאילתה. לדוגמה, בחנות אלקטרוניקה, לקוח מזין 'наушники', והמערכת מוצאת 'headphones' ו-'гарнитура'. אנו מבטיחים כיסוי קטלוג מקסימלי. מקרה מהפרקטיקה שלנו: חנות מוצרי חשמל ביתיים (לקוח שלנו) עם 80,000 מוצרים לאחר יישום מילים נרדפות הגדילה המרה מ-3.2% ל-4.8% (גידול של 50%). מקור: נתונים פנימיים, 2023. לקוח זה חסך מעל $12,000 בשנה בהפסדים הקשורים לחיפוש.
הגדרה במנועים שונים
PostgreSQL
PostgreSQL FTS תומך במילון תזאורוס – קובץ עם כללי החלפת מילים במהלך אינדוקס. צור קובץ thesaurus_ru.ths:
ноутбук лэптоп notebook : ноутбук смартфон телефон мобильник : смартфон наушники headphones : наушники לאחר מכן הגדר את תצורת החיפוש:
CREATE TEXT SEARCH DICTIONARY thesaurus_ru (
TEMPLATE = thesaurus,
DictFile = thesaurus_ru,
Dictionary = russian_ispell
);
CREATE TEXT SEARCH CONFIGURATION search_ru (COPY = russian);
ALTER TEXT SEARCH CONFIGURATION search_ru
ALTER MAPPING FOR asciiword, word, numword
WITH thesaurus_ru, russian_stem;לאחר מכן, ноутбук лэптоп notebook : ноутбук смартфон телефон мобильник : смартфон наушники headphones : наушники מחזיר CREATE TEXT SEARCH DICTIONARY thesaurus_ru ( TEMPLATE = thesaurus, DictFile = thesaurus_ru, Dictionary = russian_ispell ); CREATE TEXT SEARCH CONFIGURATION search_ru (COPY = russian); ALTER TEXT SEARCH CONFIGURATION search_ru ALTER MAPPING FOR asciiword, word, numword WITH thesaurus_ru, russian_stem; . חשוב: בעת הוספת מילה נרדפת חדשה, יש לבצע אינדוקס מחדש של הנתונים – החיסרון היחיד של גישה זו. עבור קטלוגים סטטיים (למשל, חנות חלקי רכב עם 50,000 מוצרים), אינדוקס מחדש אורך כ-10 דקות.
Elasticsearch
Elasticsearch מעבד מילים נרדפות תוך כדי תנועה – הן במהלך אינדוקס והן במהלך חיפוש. השתמש במסנן הטוקנים to_tsvector('search_ru', 'лэптоп Dell'):
PUT /products
{
"settings": {
"analysis": {
"filter": {
"synonym_ru": {
"type": "synonym",
"synonyms_path": "synonyms_ru.txt",
"updateable": true
},
"russian_stemmer": {
"type": "stemmer",
"language": "russian"
}
},
"analyzer": {
"ru_with_synonyms": {
"tokenizer": "standard",
"filter": ["lowercase", "russian_stemmer", "synonym_ru"]
}
}
}
}
}עם 'ноутбук':1 'dell':2, ניתן לעדכן מילים נרדפות ללא אינדוקס מחדש דרך ה-API: synonym. עבור מילים נרדפות מרובות מילים (למשל, 'стиральная машина' ↔ 'стиралка'), השתמש ב-PUT /products { "settings": { "analysis": { "filter": { "synonym_ru": { "type": "synonym", "synonyms_path": "synonyms_ru.txt", "updateable": true }, "russian_stemmer": { "type": "stemmer", "language": "russian" } }, "analyzer": { "ru_with_synonyms": { "tokenizer": "standard", "filter": ["lowercase", "russian_stemmer", "synonym_ru"] } } } } } – הוא שומר על מיקומי טוקנים במהלך חיפוש ביטויים.
Meilisearch
Meilisearch תומך במילים נרדפות מובנות – פשוט העבר את המילון דרך ה-API:
import meilisearch
client = meilisearch.Client('http://localhost:7700', 'masterKey')
index = client.index('products')
index.update_synonyms({
'ноутбук': ['лэптоп', 'notebook'],
'лэптоп': ['ноутбук', 'notebook'],
})אין צורך באינדוקס מחדש – שינויים חלים באופן מיידי. אידיאלי לפרויקטים שבהם המילון משתנה לעתים קרובות.
בחירת המנוע המתאים
Elasticsearch מהיר עד פי 4 מ-PostgreSQL עבור שאילתות עשירות במילים נרדפות על אינדקסים גדולים (מעל 1 מיליון מוצרים). Meilisearch קל פי 2 לניהול עבור צוותים קטנים עם תקציבים מוגבלים. עבור קטלוגים מתחת ל-50,000 מוצרים עם עדכונים נדירים, PostgreSQL חסכוני. בין אם אתה צריך מילים נרדפות של PostgreSQL, מילים נרדפות של Elasticsearch או מילים נרדפות של Meilisearch, יש לנו את המומחיות.
| פרמטר | PostgreSQL | Elasticsearch | Meilisearch |
|---|---|---|---|
| סוג מילים נרדפות | אינדוקס (סטטי) | אינדוקס וחיפוש (דינמי) | חיפוש (דינמי) |
| אינדוקס מחדש בעת שינוי | נדרש | לא נדרש | לא נדרש |
| מילים נרדפות מרובות מילים | לא | כן (באמצעות synonym_graph) | כן |
| ניהול API | לא | חלקי | כן |
| ביצועים עם 1000+ קבוצות | בינוני | גבוה | גבוה |
שיטות עבודה מומלצות
טעויות נפוצות שיש להימנע מהן
| טעות | השלכות | פתרון |
|---|---|---|
| התעלמות מצורות מילים | התאמות חלקיות מתפספסות | השתמש ב-stemmer/lemmatizer |
| יותר מדי מילים נרדפות | האטת מהירות | הגבל ל-1000 קבוצות |
| לא להתחשב בריבוי משמעויות | תוצאות חיוביות שגויות | השתמש במילים נרדפות הקשריות |
כיצד אנו עובדים
התהליך שלנו
- ניתוח שאילתות חיפוש וקטלוג – זיהוי מילים נרדפות נפוצות וקשרים סמנטיים.
- הרכבת מילון מילים נרדפות תוך התחשבות בטרמינולוגיה עסקית ושגיאות הקלדה נפוצות.
- הגדרת מנוע החיפוש הנבחר (PostgreSQL/Elasticsearch/Meilisearch).
- פיתוח API לניהול מילון (פאנל ניהול עם יכולת העלאת CSV).
- בדיקה על שאילתות אמיתיות – בדיקת רלוונטיות וזמן תגובה.
- פריסה ותיעוד למנהלי תוכן.
מה כלול
- ניתוח שאילתות חיפוש וקטלוג
- הרכבת מילון מילים נרדפות (ייבוא/ייצוא)
- הגדרת מנוע החיפוש
- API לניהול מילים נרדפות ופאנל ניהול
- בדיקה על שאילתות אמיתיות
- תיעוד והדרכה למנהלי תוכן
- תמיכה במהלך ההשקה
לוח זמנים ועלות
תזאורוס PostgreSQL – מיום אחד. Elasticsearch עם synonym_graph ופאנל ניהול – 1–2 ימים. Meilisearch – חצי יום. העלות מחושבת באופן אישי בהתאם לגודל הקטלוג ומורכבות המילון. הגדרה בסיסית מתחילה ב-$1,500; פתרונות ארגוניים מ-$5,000. חיסכון בזמן בחיפוש וצמיחת המרה מכסים את עלות ההגדרה תוך 2–3 חודשים. הלקוחות שלנו בדרך כלל רואים החזר השקעה תוך 3 חודשים.
צור קשר לבדיקת החיפוש שלך – נבחר את הפתרון האופטימלי ונגדיר מילון מילים נרדפות תוך 1–2 ימים. הזמן הגדרת מילים נרדפות לחיפוש וקבל ייעוץ על אופטימיזציית חיפוש. גלה כיצד מילים נרדפות יגבירו את ההמרה בחנות שלך.







