2.X/2. Search in Depth

2-3-11. Exact-Value Fields

drscg 2017. 9. 28. 21:42

The final topic that we should touch on before leaving multifield queries is that of exact-value not_analyzed fields. It is not useful to mix not_analyzed fields with analyzed fields in multi_matchqueries.

다중 field 검색을 마치기 전에, 다뤄야 할 마지막 주제는, exact-value not_analyzed field이다. multi_match query에서, not_analyzed field와 analyzed field를 섞는 것은 유용하지 않다.

The reason for this can be demonstrated easily by looking at a query explanation. Imagine that we have set the title field to be not_analyzed:

그 이유는 query explanation을 보면 쉽게 알 수 있다. title field를 not_analyzed 로 설정했다고 생각해 보자.

GET /_validate/query?explain
{
    "query": {
        "multi_match": {
            "query":       "peter smith",
            "type":        "cross_fields",
            "fields":      [ "title", "first_name", "last_name" ]
        }
    }
}

Because the title field is not analyzed, it searches that field for a single term consisting of the whole query string!

title field가 not_analyzed로 설정되었기 때문에, 전체 query string으로 구성된, 단일 단어로 해당 field를 검색한다.

title:peter smith
(
    blended("peter", fields: [first_name, last_name])
    blended("smith", fields: [first_name, last_name])
)

That term clearly does not exist in the inverted index of the title field, and can never be found. Avoid using not_analyzed fields in multi_match queries.

해당 단어는, title field의 inverted index에, 분명히 존재하지 않고, 절대 찾을 수 없다. multi_matchquery에서 not_analyzed field를 사용하는 것을 피하자.

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

2-3-09. Custom _all Fields  (0) 2017.09.28
2-3-10. cross-fields Queries  (0) 2017.09.28
2-4. Proximity Matching  (0) 2017.09.24
2-4-1. Phrase Matching  (0) 2017.09.24
2-4-2. Mixing It Up  (0) 2017.09.24