موتور جست‌وجو در نرم‌افزار سازمانی

تیم آرادتیم مهندسی

هر سامانه‌ای که داده‌اش زیاد شود، به جست‌وجو نیاز پیدا می‌کند. و اولین پیاده‌سازی همیشه یکی است: جست‌وجوی متنی ساده در پایگاه داده.

برای مدتی کار می‌کند. بعد کاربر می‌پرسد چرا وقتی «موبایل سامسونگ» را جست‌وجو می‌کند چیزی پیدا نمی‌شود، در حالی که محصولی به نام «گوشی موبایل Samsung» در سامانه هست.

کِی جست‌وجوی پایگاه داده کافی نیست

کافی است اگر: تعداد رکورد محدود است، جست‌وجو روی چند فیلد مشخص است، و کاربر تقریباً دقیق تایپ می‌کند.

کافی نیست اگر:

  • رتبه‌بندی لازم دارید. پایگاه داده می‌گوید «هست یا نیست»، نه «کدام مرتبط‌تر است».
  • کاربر غلط تایپ می‌کند.
  • می‌خواهید در چند فیلد با وزن‌های متفاوت بگردید — عنوان مهم‌تر از توضیحات.
  • فیلتر و شمارش همزمان می‌خواهید — «۱۲ محصول در این دسته».
  • پیشنهاد خودکار هنگام تایپ.
  • حجم بالاست و جست‌وجوی متنی کند شده.

و مهم‌ترین دلیل در فارسی: کاربری که «میشود» می‌نویسد باید «می‌شود» را پیدا کند، و کسی که با صفحه‌کلید عربی «کیف» می‌نویسد باید «کیف» فارسی را بگیرد. جست‌وجوی ساده این را نمی‌دهد.

موتور جست‌وجو چه چیزی اضافه می‌کند

نمایهٔ معکوس. به‌جای گشتن در همهٔ رکوردها، از کلمه به رکورد می‌رسد. سریع، حتی با میلیون‌ها سند.

تحلیل متن. شکستن به کلمه، حذف کلمات بی‌معنا، ریشه‌یابی، نرمال‌سازی.

رتبه‌بندی. نتایج بر اساس میزان ارتباط مرتب می‌شوند.

تحمل غلط املایی.

دسته‌بندی و شمارش، برای فیلترهای کناری.

مترادف. «موبایل» و «گوشی» یک چیز باشند.

مسائل فارسی، که بدون حلشان هیچ نتیجه‌ای درست نیست

این بخش، تفاوت بین موتور جست‌وجویی است که کار می‌کند و یکی که کاربران شکایت می‌کنند.

نرمال‌سازی نویسه‌ها. «ی» و «ک» عربی در برابر فارسی. اگر داده و پرس‌وجو هر دو از یک تابع نرمال‌سازی عبور نکنند، تطبیق نمی‌خورند — و این شایع‌ترین علت «چرا پیدا نمی‌شود» است.

نیم‌فاصله. «می‌شود»، «می شود»، «میشود» باید یکی حساب شوند.

اعداد. فارسی، عربی، لاتین.

اعراب، که باید حذف شوند.

ریشه‌یابی فارسی، که پیچیده‌تر از انگلیسی است: «کتاب‌ها»، «کتابی»، «کتابخانه» — اولی و دومی به «کتاب» برمی‌گردند و سومی کلمهٔ مستقلی است. ریشه‌یاب بد، دقت را پایین می‌آورد نه بالا.

کلمات بی‌معنا — «از»، «به»، «که». فهرست فارسی لازم دارید.

متن مختلط. «کیس Gaming» — هم فارسی و هم لاتین در یک عبارت.

قاعدهٔ حیاتی: همان تحلیلی که روی داده اعمال می‌شود باید روی پرس‌وجو هم اعمال شود. اگر این دو از هم واگرا شوند، جست‌وجو بی‌صدا خراب می‌شود و هیچ خطایی نمی‌دهد.

فهرست کامل این مسائل در چالش‌های پردازش زبان فارسی و وب فارسی.

معماری: نمایه در کنار پایگاه داده

موتور جست‌وجو جایگزین پایگاه داده نیست. پایگاه داده مرجع حقیقت است؛ موتور جست‌وجو نمایه‌ای برای پیدا کردن.

سه تصمیم:

همگام‌سازی. وقتی رکوردی عوض شد، نمایه چطور به‌روز می‌شود؟

  • لحظه‌ای: با هر تغییر. اما نه در همان تراکنش — اگر نمایه‌گذاری شکست بخورد، نباید ذخیرهٔ داده شکست بخورد. کار پس‌زمینه با تلاش مجدد.
  • دوره‌ای: ساده‌تر، با تأخیر.

بازسازی کامل. باید ممکن باشد. نمایه‌ای که نشود از صفر ساخت، بدهی است — چون روزی که خراب شود، راهی برای برگرداندنش ندارید.

تفاوت نمایه با واقعیت را بپذیرید. ممکن است چند ثانیه عقب باشد. رابط کاربری باید با این کنار بیاید.

چه چیزی را نمایه کنید

نه همه‌چیز. نمایهٔ بزرگ‌تر یعنی حافظهٔ بیشتر و کندی.

  • فیلدهای جست‌وجوشونده: تحلیل‌شده.
  • فیلدهای فیلتر: بدون تحلیل، فقط برای تطابق دقیق.
  • فیلدهای نمایشی: فقط اگر می‌خواهید از نتیجه مستقیم نشان دهید.
  • بقیه: نه.

و شناسه را نگه دارید تا بتوانید جزئیات کامل را از پایگاه داده بگیرید.

رتبه‌بندی، جایی که کیفیت ساخته می‌شود

رتبه‌بندی پیش‌فرض بر اساس تطابق متنی است — و برای فروشگاه یا سامانهٔ سازمانی، کافی نیست.

آنچه باید در امتیاز بیاید:

  • وزن فیلد: تطابق در عنوان مهم‌تر از توضیحات.
  • موجود بودن. محصول ناموجود نباید بالای فهرست باشد. در فروشگاه، این تنها مهم‌ترین قاعده است.
  • محبوبیت یا فروش.
  • تازگی، بسته به کاربرد.
  • دسترسی کاربر. رکوردی که کاربر حق دیدنش را ندارد، نباید در نتایج ظاهر شود — حتی به‌عنوان عنوان. این فیلتر باید در خود پرس‌وجو باشد، نه پس از دریافت نتایج.

آن بند آخر مسئلهٔ امنیتی است نه کیفیتی. سامانه‌ای که نتایج را می‌گیرد و بعد فیلتر می‌کند، تعداد کل را لو می‌دهد و در صفحه‌بندی می‌شکند.

پایش کیفیت جست‌وجو

سنجه‌هایی که ارزش دارند:

جست‌وجوهای بی‌نتیجه. فهرستشان، ارزشمندترین سند محصولی شماست: یا کالا ندارید — که در بازارگاه، نقشهٔ راه جذب فروشنده است، همان‌طور که در نقدینگی بازارگاه گفتیم — یا دارید و پیدا نمی‌شود.

نرخ کلیک روی نتایج. اگر پایین است، رتبه‌بندی مشکل دارد.

جست‌وجوی مجدد فوری. کاربری که بلافاصله عبارت را عوض می‌کند، نتیجهٔ درستی نگرفته.

پرتکرارترین عبارت‌ها، که باید دستی بررسی شوند.

کِی این کار را نکنید

اگر چند هزار رکورد دارید، جست‌وجوی پایگاه داده با نمایهٔ متنی مناسب احتمالاً کافی است. موتور جست‌وجو یک جزء زیرساختی اضافه است که باید نگهداری، پشتیبان‌گیری و پایش شود.

اگر تیم توان عملیاتش را ندارد.

و اگر مسئلهٔ واقعی شما کیفیت داده است، نه جست‌وجو. محصولاتی که عنوان بد دارند یا دسته‌بندی نشده‌اند، با هیچ موتوری پیدا نمی‌شوند. اول مدیریت اطلاعات محصول را درست کنید.

و یک نکتهٔ ترتیبی

جست‌وجوی معنایی و برداری — که در پایگاه دادهٔ برداری و RAG چیست گفتیم — لایهٔ بعدی است، نه جایگزین این.

اول جست‌وجوی کلیدواژه‌ای را درست کنید. بیشتر جست‌وجوهای کاربران در سامانهٔ سازمانی، دقیق و کلیدواژه‌ای‌اند — نام محصول، شمارهٔ فاکتور، کد کالا. برای اینها، تطابق دقیق از شباهت معنایی بهتر جواب می‌دهد.

پروژه یا ایده‌ای دارید؟

متخصصین ما آماده برگزاری یک جلسه مشاوره رایگان هستند.

مشاوره رایگان

پروژه‌تان را با هم بررسی کنیم

جلسهٔ اول رایگان است و معمولاً همان یک جلسه روشن می‌کند پروژه چقدر کار دارد.

چطور با شما تماس بگیریم؟

برای هماهنگی سریع‌تر — اگر تماس تلفنی را ترجیح نمی‌دهید، همان شماره را در پیام‌رسان پیام می‌دهیم.

راه دوم برای رساندن پاسخ — اگر تلفن در دسترس نبود، ایمیل می‌زنیم.

در حال ارسال…

درخواست شما ثبت شد.

همکاران ما پیام شما را می‌بینند و با شما تماس می‌گیرند.