חיפוש טקסט מלא מהיר עם שילוב Meilisearch
שילוב Meilisearch לחיפוש באתר
הערה: כאשר מספר הרשומות בקטלוג עולה על 50,000, ה-LIKE '%query%' הסטנדרטי ב-PostgreSQL מתחיל לפגר. זמן השאילתה גדל, עומס מסד הנתונים עולה. נתקלנו בבעיה זו בפרויקטים רבים. הפתרון — Meilisearch: מנוע חיפוש טקסט מלא שנבנה ב-Rust שמגיב במהירות של פחות מ-50 אלפיות השנייה גם על מיליוני רשומות. הוא תומך בשגיאות כתיב, חיפוש מטושטש, סינון לפי פנים (faceted filtering) והשלמה אוטומטית כברירת מחדל. הגדרת Meilisearch כוללת הקמת אינדקס, כללי דירוג וסנכרון עם מסד הנתונים. אנו מציעים שילוב Meilisearch במפתח פתוח: מהגדרת התשתית ועד רכיב הממשק. לפי ההערכות שלנו, שילוב זה מחזיר את עצמו תוך 2–3 חודשים, עם חיסכון בעלויות תשתית של עד 5,000 דולר לשנה. עלות פרויקט טיפוסית מתחילה ב-3,500 דולר. קבלו ייעוץ על שילוב הפרויקט שלכם.
תיעוד רשמי של Meilisearch: "Meilisearch הוא מנוע חיפוש פתוח-מקור, RESTful, שנבנה ב-Rust. הוא נועד להיות מהיר, רלוונטי וקל לשימוש."
למה לבחור ב-Meilisearch?
החיפוש המובנה של PostgreSQL הופך לבלתי יעיל מעבר ל-50,000 רשומות. Meilisearch בונה אינדקס הפוך בנפרד, כך ששאילתות עוקפות את מסד הנתונים הראשי. זה מפחית עומס ומאיץ את החיפוש פי 10–20. השוואה: טבלת מוצרים עם 200,000 רשומות שנשאלת דרך Meilisearch מחזירה תוצאות תוך 30–50 אלפיות השנייה, בעוד ששאילתת LIKE ב-SQL יכולה לקחת 500 אלפיות השנייה או יותר. יתר על כן, Meilisearch מתקן שגיאות כתיב ותומך בסינון לפי פנים כברירת מחדל — תכונות שדורשות הגדרה נוספת ב-Elasticsearch. שירות שילוב Meilisearch שלנו מספק החזר השקעה ממוצע של 300%. עם ניסיון של למעלה מ-5 שנים ו-50+ פרויקטי שילוב חיפוש, אנו מבטיחים ביצועים יציבים תחת עומסי שיא. צרו קשר כדי להעריך את הפרויקט שלכם.
ארכיטקטורת השילוב
Browser → Backend API → Meilisearch HTTP API ↓ PostgreSQL (источник данных) Индексатор (Queued Job / Cron) Meilisearch אינו מחליף את מסד הנתונים הראשי. הנתונים נשמרים ב-PostgreSQL; רק מידע רלוונטי לחיפוש זורם ל-Meilisearch. הסנכרון נעשה באמצעות תורים על שינויי רשומות או בנייה מחדש תקופתית של האינדקס.
איך להגדיר סנכרון?
- התקינו את Meilisearch דרך Docker:
Browser → Backend API → Meilisearch HTTP API ↓ PostgreSQL (источник данных) Индексатор (Queued Job / Cron) - צרו אינדקס עם השדות הנדרשים והגדירו כללי דירוג.
- חברו את Laravel Scout עם הדרייבר הרשמי של Meilisearch. דוגמה למודל:
use Laravel\Scout\Searchable;
class Product extends Model
{
use Searchable;
public function toSearchableArray(): array
{
return [
'id' => $this->id,
'name' => $this->name,
'description' => strip_tags($this->description),
'brand' => $this->brand->name,
'category_id' => $this->category_id,
'price' => $this->price,
'in_stock' => $this->stock > 0,
];
}
} - הריצו את האינדוקס הראשוני:
docker run -p 7700:7700 getmeili/meilisearch. - לחיפוש עם מסננים, השתמשו ב:
$results = Product::search($query)
->where('in_stock', true)
->where('category_id', $categoryId)
->orderBy('price')
->paginate(20); סינון לפי פנים (Faceted Filtering)
Meilisearch מחזיר צבירות (aggregations) לפנים בבקשה אחת. לדוגמה, כדי לסנן לפי קטגוריה, מותג וזמינות, שלחו שאילתה עם פרמטרים use Laravel\Scout\Searchable; class Product extends Model { use Searchable; public function toSearchableArray(): array { return [ 'id' => $this->id, 'name' => $this->name, 'description' => strip_tags($this->description), 'brand' => $this->brand->name, 'category_id' => $this->category_id, 'price' => $this->price, 'in_stock' => $this->stock > 0, ]; } } ו-php artisan scout:import "App\Models\Product". התשובה מכילה התפלגות לכל פן, מה שמפשט את בניית מסנני הממשק.
חיפוש ישיר מהדפדפן
בקשות ישירות מ-JavaScript ל-Meilisearch אפשריות באמצעות מפתח API לחיפוש בלבד (Search-only API Key) — מפתח עם הרשאות מוגבלות (חיפוש בלבד באינדקסים ספציפיים). זה מפחית את זמן האחזור על ידי ביטול קפיצה נוספת דרך השרת האחורי. דוגמה: $results = Product::search($query) ->where('in_stock', true) ->where('category_id', $categoryId) ->orderBy('price') ->paginate(20); .
מקרה בוחן: חנות מסחר אלקטרוני עם 200,000 מוצרים
בפרקטיקה שלנו, עבדנו עם לקוח חנות אלקטרוניקה עם קטלוג של 200,000 פריטים (SKU). בתחילה, החיפוש רץ דרך filter של PostgreSQL, זמן התגובה הגיע ל-800 אלפיות השנייה, ועומס המעבד של מסד הנתונים הגיע ל-70%. הקמנו Meilisearch: Docker על שרת נפרד, סנכרון דרך Laravel Scout עם תורים. לאחר השילוב, זמן החיפוש ירד ל-40 אלפיות השנייה, עומס מסד הנתונים ירד ב-75%. חיסכון בעלויות תשתית הסתכם ב-5,000 דולר לשנה. הלקוח דיווח על שיפור בחוויית המשתמש ועלייה של 12% בשיעור ההמרות. הפרויקט ארך 8 ימי עבודה. שילוב Meilisearch שלנו עבור לקוח זה סיפק חיפוש טקסט מלא מהיר עם סובלנות לשגיאות כתיב וסינון לפי פנים.
מה כלול בעבודה
| תוצר | תיאור |
|---|---|
| ביקורת חיפוש | ניתוח היישום הנוכחי, בדיקות עומס |
| תשתית | תמונת Docker, הגדרת SSL, יצירת מפתחות API |
| סכימת אינדקס | הגדרת מאפיינים, כללי דירוג, פנים |
| שילוב שרת אחורי | קוד סנכרון דרך תורים, שאילתות חיפוש |
| רכיב ממשק | חיפוש רספונסיבי עם השלמה אוטומטית ומסננים |
| בדיקות | אימות על נתונים אמיתיים, תרחישי קצה |
| תיעוד | תיאור ארכיטקטורה, הוראות פריסה |
| תמיכה לאחר השקה | שבועיים של תחזוקה |
לוח זמנים משוער
| שלב | זמן |
|---|---|
| הקמת תשתית | יום אחד |
| סכימת אינדקס | יום אחד |
| שילוב שרת אחורי | 2–3 ימים |
| רכיב חיפוש בממשק | 2–3 ימים |
| בדיקות ופריסה | יום אחד |
סה"כ: 7–9 ימי עבודה לקטלוג טיפוסי. התמחור אישי — צרו קשר להערכת פרויקט.
ניטור
מדדי ניטור
Meilisearch מייצא מדדים דרך `/metrics` בפורמט Prometheus (כאשר האפשרות מופעלת). אינדיקטורים מרכזיים: גודל אינדקס, משך משימת אינדוקס, שאילתות בשנייה. סטטוס המשימות זמין דרך `/tasks`.אנו מבטיחים שהחיפוש יישאר מהיר גם תחת בקשות במקביל מאלפי משתמשים. הניסיון מראה שאינדוקס מוגדר כראוי מפחית את עומס מסד הנתונים ב-60–80%. הזמינו שילוב Meilisearch לאתר שלכם וקבלו חיפוש מהיר ורלוונטי. צרו קשר לייעוץ והערכת פרויקט.







