[ElasticSearch] function_score terms 로 포함 여부에 따른 스코어링하기

Woong·2024년 6월 5일
0

ElasticSearch

목록 보기
22/28
  • 포함되면 스코어를 높게 주고 싶고, 포함되지 않아도 long-tail 로 처리되도록 하고 싶을 때 유용
  • query 에서 filter 를 적용할 시 매칭되지 않는 document 는 검색이 되지 않으므로, function_score 쿼리의 functions 에서 filter 를 대신 적용
    • 필터에 적용되면 score 에 반영되고, 적용되지 않으면 스코어가 없을 뿐
{
  "query": {
    "function_score": {
      "query": {
        "match_all": {}
      },
      "functions": [
        {
          "filter": {
            "terms": {
              "topic": ["topic1", "topic2", "topic3"]
            }
          },
          "weight": 2
        }
      ],
      "score_mode": "sum",
      "boost_mode": "multiply"
    }
  },
  "sort": [
    "_score"
  ]
}

0개의 댓글

관련 채용 정보