Hwan-seok / elasticsearch-TIL

0 stars 0 forks source link

dis_max #2

Open Hwan-seok opened 3 years ago

Hwan-seok commented 3 years ago

search api에서 dis_mix문은 멀티필드쿼리중 의도하지 않는 스코어링 이슈를 해결할 수 있다.

1.

제목: i am dog 내용: we are quick pets

  1. 제목 i am quick 내용 we are quick too

이라면, 1번에는 내용에 정확하게 검색하려는것이 들어가지만, 제목엔 아예 안들어간다 2번에는 둘다 pets라는 단어가 없지만 두 필드 모두에서 일치하는 토큰이 나왔으므로 점수가 더 높게 설정된다. 이때 1번에 더 큰 점수를 부여하고 싶다면 dis_max 쿼리를 사용하면 된다. tie_breaker는 얼마나 가산점을 더 줄지 결정하는 값(optional)


ex)

{
  "query": {
    "dis_max": {
      "queries": [
        { "term": { "title": "Quick pets" } },
        { "term": { "body": "Quick pets" } }
      ],
      "tie_breaker": 0.7
    }
  }
}
Hwan-seok commented 3 years ago

multi_match 쿼리에서 typebest_fields한것과 같음 => 내부적으로 wrapping해서 나감