الاستیک سرچ با دو هدف عمده در پروژه ها مورد استفاده قرار می گیرد:
اول: استفاده به عنوان Doc-Storage ( شبیه به برخی از No-SQL های دیگر مانند Mongo-DB)
دوم: استفاده به عنوان موتور جستجو متنی
اما ویژگی منحصر به فرد الاستیک سرچ، قابلیت موتور جستجوی متنی است پس کاربرد دوم مهم تر است.
اگرچه، راه اندازی الاستیک سرچ، به عنوان Doc-Storage نسبتا ساده است. راه اندازی الاستیک سرچ، به عنوان موتور جستجو متنی دشوار است و نیاز به تجربه دارد.
اکثر وب سایت های کشور و موتورهای جستجوی سازمانی، رتبه بندی مناسبی ندارند و در نتیجه موارد زیر رخ می دهد:
به همین دلیل، ارائه یک رتبه بندی بهینه هدف مهم هر موتور جستجو است!
دشواری (!!!؟) این کار در کجاست؟ کاربر نیاز خود را با چند کلمه بیان می کند، موتور جستجو باید منظور کاربر را بفهمد و بهترین نتیجه را در بهترین رتبه نمایش دهد!
هر یک از موتورهای جستجوی سازمانی، نوعی از آیتم های مشخص را بازیابی و رتبه بندی می کنند. برای مثال:
برای یک جستجوی بهینه، باید اطلاعات آیتم ها از پایگاه داده مبدا استخراج شود و به فرمت مناسب در الاستیک سرچ تبدیل شود.
برای یک کوئری داده شده، موتور جستجو به هر سند (آیتم) یک امتیاز می دهد. شکل کلی تابع رتبه بندی به صورت زیر است:
سیگنال های مهم در رتبه بندی به چهار دسته اصلی تقسیم می شوند
هدف از این سیگنال ارائه یک رتبه بندی پایه است. استفاده از این سیگنال Recall بازیابی را افزایش می دهد. ایده سیگنال پایه ساده است:
آیتمی بهتر است که بیشترین کلمات جستجو در ان رخ داده است.
پیاده سازی این سیگنال با استفاده از یک کوئری از نوع query_string انجام می شود.
موارد زیر را در نظر بگیرید:
موارد بالا با استفاده از match_phrase باید پیاده سازی شود.
بیش از 50 درصد از کوئری ها در موتورهای جستجو، مربوط به بازیابی یک موجودیت ( فرد، سازمان، مکان و ...) است.
نکته مهم: در این موارد نباید از امتیاز دهی مبتنی بر TF-IDF استفاده کرد.
هر آیتمی که موجودیت موردنظر را دارد یک امتیاز مشخص دریافت می کند. موارد بالا با استفاده از multi_match باید پیاده سازی شود.
با استفاده مناسب از این سیگنال ها می توان دقت جستجو را تا حد زیادی افزایش داد.
ایده های زیر را در نظر بگیرید:
موارد بالا با function_score پیاده سازی می شود. معمولا باید تابع طراحی شده log-scale باشد تا بهترین نتیجه به دست بیاید.
تنظیم بهترین تابع رتبه بندی باعث می شود تا موارد زیر بهبود یابد:
تنظیم Ranking Function با دقت و ظرافت برای هر دامنه به طور خاص و سفارشی باید انجام شود.
جهت دریافت مشاوره با Mahmood.Neshati در جیمیل تماس بگیرید.