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(가장 높은 점수만 계산됨). |