محمود نشاطی
محمود نشاطی
خواندن ۳ دقیقه·۷ سال پیش

چگونه الاستیک سرچ را برای رتبه بندی بهینه تنظیم کنیم؟

تابع رتبه بندی نیاز داریم!

الاستیک سرچ با دو هدف عمده در پروژه ها مورد استفاده قرار می گیرد:

اول: استفاده به عنوان Doc-Storage ( شبیه به برخی از No-SQL های دیگر مانند Mongo-DB)

دوم: استفاده به عنوان موتور جستجو متنی

اما ویژگی منحصر به فرد الاستیک سرچ، قابلیت موتور جستجوی متنی است پس کاربرد دوم مهم تر است.

اگرچه، راه اندازی الاستیک سرچ، به عنوان Doc-Storage نسبتا ساده است. راه اندازی الاستیک سرچ، به عنوان موتور جستجو متنی دشوار است و نیاز به تجربه دارد.

مهم این است که 10 نتیجه اول را چی برگردانیم!
مهم این است که 10 نتیجه اول را چی برگردانیم!

اکثر وب سایت های کشور و موتورهای جستجوی سازمانی، رتبه بندی مناسبی ندارند و در نتیجه موارد زیر رخ می دهد:

  • تضعیف تجربه کاربری
  • کاهش فروش
  • کاهش بازگشت مشتری

به همین دلیل، ارائه یک رتبه بندی بهینه هدف مهم هر موتور جستجو است!

دشواری (!!!؟) این کار در کجاست؟ کاربر نیاز خود را با چند کلمه بیان می کند، موتور جستجو باید منظور کاربر را بفهمد و بهترین نتیجه را در بهترین رتبه نمایش دهد!

ارائه رتبه بندی خوب، اصلا کار ساده ای نیست!

ارائه رتبه بندی خوب، اصلا کار ساده ای نیست!
ارائه رتبه بندی خوب، اصلا کار ساده ای نیست!

نحوه نمایش آیتم های جستجو شونده در مبدا و مقصد

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

  • نامه های سازمانی در سامانه های اتوماسیون اداری
  • محصولات و کالا ها در وب سایت های E-commerce مانند دیجیکالا، بامیلو، و ...
  • آگهی های استخدام در وب سایت های استخدامی در جاب اینجا و ...
  • و ...

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

باید داده ها از مبدا استخراج و به فرمت مناسب برای جستجو تبدیل شود.
باید داده ها از مبدا استخراج و به فرمت مناسب برای جستجو تبدیل شود.

شکل کلی تابع رتبه بندی در الاستیک سرچ

برای یک کوئری داده شده، موتور جستجو به هر سند (آیتم) یک امتیاز می دهد. شکل کلی تابع رتبه بندی به صورت زیر است:

تابع رتبه بندی در الاستیک سرچ
تابع رتبه بندی در الاستیک سرچ

سیگنال های مهم در رتبه بندی به چهار دسته اصلی تقسیم می شوند

  • سیگنال پایه
  • سیگنال های متنی وابسته به کوئری
  • سیگنال های غیر متنی وابسته به کوئری
  • سیگنال های غیروابسته به کوئری
انواع سیگنال های رتبه بندی
انواع سیگنال های رتبه بندی

سیگنال پایه

هدف از این سیگنال ارائه یک رتبه بندی پایه است. استفاده از این سیگنال Recall بازیابی را افزایش می دهد. ایده سیگنال پایه ساده است:

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

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

سیگنال های متنی وابسته به کوئری

موارد زیر را در نظر بگیرید:

  • اگر عبارت جستجو شده توسط کاربر عینا، در Subject یک نامه وجود دارد، آن نامه باید رتبه اول در بازیابی را داشته باشد.
  • اگر نام یک محصول عینا توسط یک کاربر جستجو شود، آن محصول باید بهترین رتبه را در بازیابی داشته باشد.

موارد بالا با استفاده از match_phrase باید پیاده سازی شود.

استفاده از Phrase برای بهبود دقت جستجو الزامی است.
استفاده از Phrase برای بهبود دقت جستجو الزامی است.

سیگنال های غیر متنی وابسته به کوئری

بیش از 50 درصد از کوئری ها در موتورهای جستجو، مربوط به بازیابی یک موجودیت ( فرد، سازمان، مکان و ...) است.

نکته مهم: در این موارد نباید از امتیاز دهی مبتنی بر TF-IDF استفاده کرد.

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

با استفاده مناسب از این سیگنال ها می توان دقت جستجو را تا حد زیادی افزایش داد.

سیگنال های غیروابسته به کوئری

ایده های زیر را در نظر بگیرید:

  • در هنگام جستجوی آیتم ها، آیتم های جدیدتر باید در رتبه های بهتری قرار بگیرند (Recency)
  • در هنگام جستجو، کاربر ممکن است یک ترجیح مشخص داشته باشد، مثلا یک کاربر کالاهای ارزان تر را ترجیح می دهد.
  • در هنگام جستجو، کسب و کار (Business) ممکن است یک ترجیح مشخص داشته باشد، مثلا کالاهای موجود در انبار را در رتبه بهتری نمایش دهد.

موارد بالا با function_score پیاده سازی می شود. معمولا باید تابع طراحی شده log-scale باشد تا بهترین نتیجه به دست بیاید.

توابع لگاریتمی برای ایجاد ترجیح در رتبه بندی
توابع لگاریتمی برای ایجاد ترجیح در رتبه بندی

نتیجه گیری

تنظیم بهترین تابع رتبه بندی باعث می شود تا موارد زیر بهبود یابد:

  • تجربه کاربری
  • نرخ تبدیل
  • فروش محصول
تنظیم Ranking Function با دقت و ظرافت برای هر دامنه به طور خاص و سفارشی باید انجام شود.

جهت دریافت مشاوره با Mahmood.Neshati در جیمیل تماس بگیرید.


elasticرتبه بندیموتور جستجوسازمان
مهندس نرم افزار و استادیار دانشگاه
شاید از این پست‌ها خوشتان بیاید