احسان رضایی

یک توسعه دهنده

اولویت دهی برای جستجو یا boosting در elasticsearch

در elasticsearch , / تاریخ ارسال 08-10-1398 / 0 نظر / آخرین ویرایش 20-08-1403

توی مطلب قبلی در مورد تفاوت match و multi_match توضیح دادم. معمولا هنگام جستجو و استفاده از multi_match بهتره اولویت های بالاتر یا پایین تری برای فیلد هامون در نظر بگیریم. به طور پیشفرض الستیک سرچ هنگام جستجو و match کردن بین فیلد ها تفاوتی قائل نمیشه. الستیک معیاری به نام boost داره که مقدار اولیه اش 1.0 هست و شما میتونید با افزایش این مقدار به فیلدهاتون برای match شدن اولویت بدین.

مثلا یک document با دو فیلد title و content رو در نظر بگیرید. میخواییم هنگام جستجو اولویت title برای match شدن دو برابر content باشه. چون از نظر ما title مهمتره و اگر بتونیم در title چیزی پیدا کنیم به احتمال خیلی زیاد نتیجه جستجوی بهتری خواهیم داشت.

برای boosting یا اولویت دادن دو راه وجود داره. هنگام تعریف mappings یا زمان جستجو. اگر سیاست های جستجوی ما مشخص باشه بهتره داخل mapping این کار انجام بشه.

مثال:

PUT my_index
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "boost": 2
      },
      "content": {
        "type": "text"
      }
    }
  }
}

نمونه boosting در زمان جستجو:

POST _search
{
    "query": {
        "match" : {
            "title": {
                "query": "quick brown fox",
                "boost": 2
            }
        }
    }
}

 

پیشنهاد

کتاب‌ها

کتاب الگوهای طراحی به بیان ساده(design patterns / دیزاین پترن)

در مهندسی نرم افزار، design patterns(الگوهای طراحی) راه حل‌های قابل استفاده برای مشکلاتی هستند که معمولاً در طراحی نرم‌افزار اتفاق می افتند.

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

کتاب refactoring / ریفکتورینگ

Refactoring مجموعه‌ای از تکنیک‌هاست که به منظور اصلاح و بهبود کدهای قبلی بدون تغییر در عملکرد و رفتارشان جهت خوانایی، کارامدی و قابلیت نگهداری بیشتر انجام می‌شود.

در کتاب Refactoring اثر Martin Fowler نوشته شده: refactoring تکنیک مرتب/منظم سازی برای تجدید ساختار کد موجود است. تغییر ساختار داخلی کد بدون تغییر رفتار خارجی آن.

refactoring یک سرمایه‌گذاری و راه حلی برای مقابله با کد کثیف و بدهی فنی است که باعث کاهش هزینه‌های توسعه نرم‌افزار در آینده خواهد شد.

ارسال نظر