A search on the Internet for "Apple" is likely to return results about the company, the fruit, and various recipes. We could try to narrow it down to just the company by excluding words like pie
, tart
, crumble
, and tree
, using a must_not
clause in a bool
query:
인터넷에서 "Apple" 을 검색하면, 회사(company), 과일(fruit) 그리고 다양한 조리법(recipes)에 대한 결과를 반환할 것이다. bool
query에서 must_not
절을 사용하여, pie
, tart
, crumble
, 그리고, tree
같은 단어를 제외하고, 회사(company)만으로 그 결과를 좁히려고 할 수 있다.
GET /_search { "query": { "bool": { "must": { "match": { "text": "apple" } }, "must_not": { "match": { "text": "pie tart fruit crumble tree" } } } } }
But who is to say that we wouldn’t miss a very relevant document about Apple the company by excluding tree
or crumble
? Sometimes, must_not
can be too strict.
그러나, tree
나 crumble
을 제외함으로써, Apple 이라는 회사에 대한 매우 관련 있는 document를 놓치지 않을까? 때로는, must_not
은 지나치게 엄격할 수 있다.
boosting Queryedit
The boosting
query solves this problem. It allows us to still include results that appear to be about the fruit or the pastries, but to downgrade them—to rank them lower than they would otherwise be:
boosting
query는 이 문제를 해결한다. 여전히 과일이나 페이스트리 에 대한 결과도 포함한다. 그러나 다른 것들보다 순위를 떨어뜨린다.
GET /_search { "query": { "boosting": { "positive": { "match": { "text": "apple" } }, "negative": { "match": { "text": "pie tart fruit crumble tree" } }, "negative_boost": 0.5 } } }
It accepts a positive
query and a negative
query. Only documents that match the positive
query will be included in the results list, but documents that also match the negative
query will be downgraded by multiplying the original _score
of the document with the negative_boost
.
positive
query와 negative
query가 있다. positive
query에 일치하는 document만 결과 목록에 포함될 것이다. 그러나, negative
query에 일치하는 document도, document의 원래 _score
에negative_boost
를 곱해 순위를 떨어뜨려 일치시킨다.
For this to work, the negative_boost
must be less than 1.0
. In this example, any documents that contain any of the negative terms will have their _score
cut in half.
이렇게 동작하려면, negative_boost
는 1.0
보다 작아야 한다. 위의 예에서, negative 단어를 포함하는 모든 document는, _score
가 절반이 될 것이다.
'2.X > 2. Search in Depth' 카테고리의 다른 글
2-6-03. Query-Time Boosting (0) | 2017.09.24 |
---|---|
2-6-04. Manipulating Relevance with Query Structure (0) | 2017.09.24 |
2-6-06. Ignoring TF/IDF (0) | 2017.09.24 |
2-6-07. function_score Query (0) | 2017.09.24 |
2-6-08. Boosting by Popularity (0) | 2017.09.24 |