جستجو: Elasticsearch

Elasticsearch: موتور جستجوی متن کامل با ایندکس معکوس، تحلیل متن و کاربردهای واقعی جستجو

چرا دیتابیس کافی نیست؟

LIKE %کلمه% در SQL = اسکن کامل + بدون فهم زبان! برای جستجوی واقعی (رتبه‌بندی، غلط‌یابی، فازی) موتور جستجو لازم است.

Elasticsearch چیست؟

موتور جستجوی متن کامل توزیع‌شده، مبتنی بر Lucene — قلب سیستم‌های جستجوی بزرگ (ویکی‌پدیا، گیت‌هاب، دیجی‌کالا!).

ایندکس معکوس — قلب جادو

دیتابیس: سند → کلمات. ایندکس معکوس: کلمه → اسناد!

سند ۱: «یادگیری ماشین جذاب است»
سند ۲: «یادگیری عمیق شاخه ماشین است»

ایندکس معکوس:
یادگیری → [۱, ۲]
ماشین   → [۱, ۲]
جذاب    → [۱]
عمیق    → [۲]

جستجوی «ماشین» = مستقیم لیست [۱,۲] — بدون اسکن!

تحلیل متن (Analysis)

قبل از ایندکس، متن «تحلیل» می‌شود:

  1. Tokenize: جمله → کلمات
  2. فیلتر: حذف stopwords (از، به، که)
  3. Stemming: «کتاب‌ها» → «کتاب»
  4. Lowercase، نرمال‌سازی

جستجو هم همین تحلیل را می‌گذراند — «کتاب‌هایم» و «کتاب» هم‌رنگ می‌شوند!

رتبه‌بندی (Relevance)

مرتب‌سازی نتایج با TF-IDF/BM25:

معماری توزیع‌شده

کاربردها

نکته معماری: Elasticsearch «دیتابیس اصلی» نیست — داده از منبع (PostgreSQL) با sync (CDC/Logstash) به آن می‌رسد؛ جستجو در ES، ثبت در SQL!

جمع‌بندی

این مبحث بخشی از دوره آموزش کامل طراحی سیستم (System Design) است.

ابزارهای مرتبط