[ElasticSearch] function_score decay 함수

Woong·2023년 9월 8일
0

ElasticSearch

목록 보기
21/21

개요

  • function_score query 에서 사용하는 감쇠 함수
  • 사용자가 지정한 값으로부터 거리에 따라 점점 감소하는 함수
    • origin : distance (거리) 를 계산할 기준점
      • 숫자, date, geo 필드만 가능
    • offset : origin 으로부터 decay (감쇠)가 시작할 거리
      • geo 는 1km, 날짜는 1d 와 같은 포맷 지원
    • scale : origin + offset 한 값 (=감쇠가 시작하는 distance) 으로부터 감쇠된 값이 decay 값이 되도록 할 거리. 기본값 0
    • decay : origin+offset 지점과 scale 만큼의 distance가 있는 지점에서의 감쇠된 값. 기본값 0.5
      • origin 으로부터 거리가 offset + scale 만큼인 지점의 값이 decay 가 됨

지원하는 함수 종류

  • gauss

    • S(doc)=exp(max(0,fieldvaluedocoriginoffset)22σ2)S(doc)=exp(-\frac{max(0,|fieldvalue_{doc}-origin|offset)^2}{2\sigma^2})
    • σ2=scale2/(2ln(decay))\sigma^2=-scale^2/(2*ln(decay))
  • exp

    • S(doc)=exp(λmax(0,fieldvaluedocoriginoffset))S(doc)=exp(\lambda*max(0,|fieldvalue_{doc}-origin|offset))
    • λ=ln(decay)/scale\lambda=ln(decay)/scale
  • linear

    • S(doc)=max(smax(0,fieldvaluedocoriginoffset)s,0)S(doc)=max(\frac{s-max(0,|fieldvalue_{doc}-origin|-offset)}{s},0)
    • s=scale/(1.0decay)s=scale/(1.0-decay)
  • 필드의 값이 여러개일 경우, 아래 옵션을 통해 거리 계산 방식 지정

    • min : 가장 거리가 가까운 값. 기본값
    • max : 가장 거리가 먼 값
    • avg : 거리의 평균
    • sum : 거리들의 총합

reference

0개의 댓글