Disjunction max 쿼리

Disjunction max 쿼리

dis_max(disjunction max) 쿼리는 하나 이상의 쿼리 절과 일치하는 모든 문서를 반환해요. 여러 쿼리 절과 일치하는 문서에는 모든 일치 쿼리 절 중 가장 높은 관련성 점수가 설정됩니다.

출처: 문서

본문

dis_max(disjunction max) 쿼리는 하나 이상의 쿼리 절과 일치하는 모든 문서를 반환해요. 여러 쿼리 절과 일치하는 문서의 관련성 점수는 모든 일치 쿼리 절의 관련성 점수 중 가장 높은 값으로 설정돼요.

반환된 문서의 관련성 점수가 동일할 때는 tie_breaker 파라미터를 사용해 여러 쿼리 절과 일치하는 문서에 더 많은 가중치를 줄 수 있어요.

예시 (Example)

다음과 같이 인덱싱한 두 문서가 있는 인덱스를 생각해 볼게요.

PUT testindex1/_doc/1
{
  "title": "The Top 10 Shakespeare Poems",
  "body": "Top 10 sonnets of England's national poet and the Bard of Avon"
}
PUT testindex1/_doc/2
{
  "title": "Sonnets of the 16th Century",
  "body": "The poems written by various 16th-century poets"
}

dis_max 쿼리를 사용해 title과 body 필드에서 "Shakespeare poems"라는 단어를 검색하세요.

GET testindex1/_search
{
  "query": {
    "dis_max": {
      "queries": [
        { "match": { "title": "Shakespeare poems" }},
        { "match": { "body":  "Shakespeare poems" }}
      ]
    }
  }            
}

응답에는 두 문서 모두 포함돼요. 문서 1은 title 필드가 두 단어 모두와 일치하므로 더 높은 관련성 점수를 받지만, 문서 2는 "poems"라는 단어만 일치해요.

{
  "took": 1,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 2,
      "relation": "eq"
    },
    "max_score": 0.63013375,
    "hits": [
      {
        "_index": "testindex1",
        "_id": "1",
        "_score": 0.63013375,
        "_source": {
          "title": "The Top 10 Shakespeare Poems",
          "body": "Top 10 sonnets of England's national poet and the Bard of Avon"
        }
      },
      {
        "_index": "testindex1",
        "_id": "2",
        "_score": 0.34314215,
        "_source": {
          "title": "Sonnets of the 16th Century",
          "body": "The poems written by various 16th-century poets"
        }
      }
    ]
  }
}

파라미터 (Parameters)

다음 표는 dis_max 쿼리가 지원하는 모든 최상위 파라미터를 나열해요.

파라미터 설명
queries 문서를 매칭하는 데 사용되는 하나 이상의 쿼리 절 배열. 문서는 결과에 반환되기 위해 적어도 하나의 쿼리 절과 일치해야 해요. 문서가 여러 쿼리 절과 일치하면 관련성 점수는 모든 일치 쿼리 절 중 가장 높은 점수로 설정돼요. 필수.
tie_breaker 여러 쿼리 절과 일치하는 문서에 더 많은 가중치를 주는 데 사용하는 0과 1.0 사이의 부동소수점 계수. 이 경우 문서의 관련성 점수는 다음 알고리즘으로 계산돼요. 모든 일치 쿼리 절에서 가장 높은 관련성 점수를 가져와, 다른 모든 일치 절의 점수에 tie_breaker 값을 곱하고, 관련성 점수들을 더한 뒤 정규화해요. 선택 사항. 기본값은 0(가장 높은 점수만 계산됨).

더 알아보기 (Learn more)