بازگشت به کتابخانهکتابخانه8.8Case Study: موتور جستجو
طراحی سیستم نرم‌افزاریSYSTEM DESIGNاز صفر تا تسلط
v1.0.0
01مبانی و تصویر بزرگ
02Scalability و ظرفیت
03لایه داده
04Cache، Queue و جریان
05معماری نرم‌افزار
06قابلیت اطمینان و عملیات
07متد طراحی
08Case Study های واقعی
09سیستم‌های توزیع‌شده عمیق
10مهندسی تولید: داده، امنیت و کارایی
11تمرین پیشرفته و کیس‌استادی‌های مکمل
12زیر کاپوت دیتابیس و معماری داده
13وب بلادرنگ و پروتکل‌های مدرن
14سیستم‌های توزیع‌شده پیشرفته
15SaaS ،SRE ،امنیت و شبکه پیشرفته
16طراحی سیستم در عصر AI
17Case Study های تکمیلی
LESSON 8.8فصل ۸Case Study های واقعی

Case Study: موتور جستجو

  • ~۱۳ دقیقه
  • ۳ پرسش
  • متن را انتخاب کن تا هایلایت شود

مسئله: در میلیاردها سند، عبارت کاربر را در <200ms پیدا و رتبه‌بندی کن. دو دنیای جدا: Indexing (آفلاین/نزدیک‌خط) و Serving (آنلاین داغ).

۱-۳) نیازمندی و طرح

  • FR: جستجوی متنی، رتبه‌بندی مرتبط‌ترین، پیشنهاد/تکمیل خودکار، فیلترها.
  • NFR: p99 < 200ms؛ تازگی ایندکس (سند جدید ظرف دقیقه‌ها)؛ مقیاس افقی.
  • هسته: Inverted Index — نگاشت هر واژه به لیست سندها (posting list) + وزن‌ها. ساختش: crawl/ingest → پاکسازی و توکن‌سازی → ایندکس‌سازی دسته‌ای/استریمی.
DIAGRAMمسیر کوئری
Query
Query svc — parse
Shard 1
Shard 2
Shard N
تجمیع + رتبه
نتایج

۴) عمق

  • ایندکس Shard می‌شود (document-based)؛ کوئری به همه Shard ها fan-out و نتایج top-k ادغام می‌شود — تأخیر = کندترین Shard، پس replica و hedge request.
  • رتبه دو مرحله‌ای: بازیابی ارزان (BM25) → رتبه‌بندی گران ML فقط روی چند صد کاندید.
  • تکمیل خودکار: مسئله جدا — Trie/ایندکس پیشوندی از کوئری‌های محبوب، آپدیت دوره‌ای، کش تهاجمی.
  • تازگی: ایندکس اصلیِ دوره‌ای + ایندکس کوچک لحظه‌ای (delta) که در serving ادغام می‌شود.
  • کش نتایج: کوئری‌های سر (head queries) سهم بزرگی از ترافیک دارند — کش کوتاه‌عمرشان طلاست.

به زبان ساده

موتور جستجو یعنی دو دنیا: خزش و ساخت ایندکس معکوس (آفلاین) و سرو کوئری در چند میلی‌ثانیه (آنلاین) — واژه → فهرست سندها.

مثال واقعی

ایندکس معکوس مثل فهرست آخر کتاب است: به‌جای خواندن کل کتاب برای یافتن «تهران»، مستقیم می‌بینی کدام صفحه‌ها این واژه را دارند.

دانش‌سنجی

آزمون درس

۳ Q
01
چرا کوئری به همه Shard ها می‌رود ولی رتبه‌بندی ML فقط روی چند صد سند؟
02
تأخیر p99 جستجو را «کندترین Shard» تعیین می‌کند. دفاع رایج؟
03
سند جدید باید ظرف چند دقیقه قابل جستجو شود ولی بازساخت ایندکس اصلی ساعت‌ها طول می‌کشد. راه‌حل؟