[ElasticSearch] relevance tuning (관련성 튜닝)

Woong·2023년 6월 9일
0

ElasticSearch

목록 보기
18/21

relevance tuning

  • Elastic app search 의 기능이므로 Elastic Enterprise service 의 기능
    • 오픈소스 버전에서는 rank_feature query 를 사용해야한다.
  • relevance 튜닝은 Weights 과 Boosts 2가지로 구분

Weights

  • weights 은 여러 필드에 대해 검색시, 필드 간의 가중치를 부여하는 방법
    • title 과 description 이 있을 때, title 에 가중치를 더 높게 주는 등
    • search API 의 search_fields 를 통해 weight 을 줄 수 있다.
curl -X GET '<ENTERPRISE_SEARCH_BASE_URL>/api/as/v1/engines/national-parks-demo/search' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer search-soaewu2ye6uc45dr8mcd54v8' \
-d '{
  "search_fields": {
    "title": {
      "weight": 10
    },
    "description": {
      "weight": 1
    },
    "states": {
      "weight": 2
    }
  },
  "query": "mountains"
}'

Boost

  • 필드의 값에 따라 적용되는 가중치

Value Boost

  • text, number, data 필드에 적용
  • 주어진 값에 매치되는 필드가 있을 경우 부스트

Functional Boost

  • number 필드에 적용
  • 등급에 따라 부스팅하는 등 활용

Proximity Boost

  • number, geolocation 필드에 적용.
  • 위치 값에 따라 근접한 장소를 부스트
  • 사용자 GPS 위치에 따라 가까운 값을 제공하는 등

Recency Boost

  • proximity boost 의 일종

  • date 필드에 적용

  • 미래의 특정 날짜, 또는 현재 날짜에 대해 가까운 날짜로 부스트

  • 부스트의 강도는 factor 를 0~10 값에 따라 조정

    • relevance (관련성)을 높이는 것은 가능하지만 낮추는 것은 불가능

스코어 계산

  • boost 는 function, factor 에 따라 계산
    • function 은 linear, exponential, gaussian, logarithmic
      • linear, exponential 은 선형/지수
      • gaussian 은 정규분포. 위치에 따른 계산에 적절
      • logarithmic 은 값 증가에 따라 천천히 증가하는 형태
        • rating 같은 등급 계산에 적절
  • operation 으로는 add, multiply 중 선택.
    부스트를 스코어에 합할지 곱할지 선택
curl -X GET '<ENTERPRISE_SEARCH_BASE_URL>/api/as/v1/engines/national-parks-demo/search' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer search-soaewu2ye6uc45dr8mcd54v8' \
-d '{
  "query": "old growth",
  "boosts": {
    "world_heritage_site": [
      {
        "type": "value",
        "value": "true",
        "operation": "multiply",
        "factor": 10
      }
    ]
  }
}'
curl -X GET '<ENTERPRISE_SEARCH_BASE_URL>/api/as/v1/engines/national-parks-demo/search' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer search-soaewu2ye6uc45dr8mcd54v8' \
-d '{
  "query": "old growth",
  "boosts": {
    "location": {
      "type": "proximity",
      "function": "exponential",
      "center": "25.32, -80.93",
      "factor": 3
    }
  }
}'

reference

0개의 댓글