2.X/2. Search in Depth

2-3-5. How match Uses bool

drscg 2017. 9. 30. 01:31

By now, you have probably realized that multiword match queries simply wrap the generated termqueries in a bool query. With the default or operator, each term query is added as a should clause, so at least one clause must match. These two queries are equivalent:

이제, 다중 단어 match query는, 생성된 term query를 단순히 bool query로 감싼 것이라는 것을 알게 되었을 것이다. 각 term query가, 기본인 or operator와 함께, should 절에 추가된다. 따라서, 최소한 하나 이상은 일치해야 한다. 아래 두 query는 완전히 똑같다.

{
    "match": { "title": "brown fox"}
}
{
  "bool": {
    "should": [
      { "term": { "title": "brown" }},
      { "term": { "title": "fox"   }}
    ]
  }
}

With the and operator, all the term queries are added as must clauses, so all clauses must match. These two queries are equivalent:

and operator를 사용하면, 모든 term query가 must 절에 추가된다. 따라서 모든(all) 절은 반드시 일치해야 한다. 아래 두 query는 완전히 똑같다.

{
    "match": {
        "title": {
            "query":    "brown fox",
            "operator": "and"
        }
    }
}
{
  "bool": {
    "must": [
      { "term": { "title": "brown" }},
      { "term": { "title": "fox"   }}
    ]
  }
}

And if the minimum_should_match parameter is specified, it is passed directly through to the boolquery, making these two queries equivalent:

그리고, minimum_should_match 매개변수가 지정되면, 그것은 바로 bool query를 거치게 된다. 아래 두 query는 완전히 똑같다.

{
    "match": {
        "title": {
            "query":                "quick brown fox",
            "minimum_should_match": "75%"
        }
    }
}
{
  "bool": {
    "should": [
      { "term": { "title": "brown" }},
      { "term": { "title": "fox"   }},
      { "term": { "title": "quick" }}
    ],
    "minimum_should_match": 2 
  }
}

3개의 절만 있기 때문에, match query에서 75% 인 minimum_should_match value는 반올림된 2가 된다. 3개의 should 절 중 2개는 반드시 일치해야 한다.

Of course, we would normally write these types of queries by using the match query, but understanding how the match query works internally lets you take control of the process when you need to. Some things can’t be done with a single match query, such as give more weight to some query terms than to others. We will look at an example of this in the next section.

물론, 일반적으로 match query를 사용하여, 이런 형태의 query를 작성할 수도 있지만, match query가 내부적으로 동작하는 방법을 이해하면, 필요한 경우에 프로세스를 제어할 수 있다. 단일 match query로 할 수 없는 것(특정 검색어에 대해 다른 검색어보다 더 많은 비중을 주는 query)들이 있다. 다음에서 이런 query의 예를 살펴보도록 하자.

'2.X > 2. Search in Depth' 카테고리의 다른 글

2-2-3. Multiword Queries  (0) 2017.09.30
2-2-4. Combining Queries  (0) 2017.09.30
2-3-6. Boosting Query Clauses  (0) 2017.09.30
2-2-7. Controlling Analysis  (0) 2017.09.30
2-2-8. Relevance Is Broken!  (0) 2017.09.30