6.6.5 Unique

이 문서의 허가되지 않은 무단 복제나 배포 및 출판을 금지합니다. 본 문서의 내용 및 도표 등을 인용하고자 하는 경우 출처를 명시하고 김종민(kimjmin@gmail.com)에게 사용 내용을 알려주시기 바랍니다.

"white fox, white rabbit, white bear" 같은 문장을 분석하면 "white" 텀은 총 3번 저장이 됩니다. 역 색인에는 텀이 1개만 있어도 텀을 포함하는 도큐먼트를 가져올 수 있기 때문에 중복되는 텀 들은 삭제 해 주어도 검색에는 보통 무방합니다. 이 경우 unique 토큰 필터를 사용해서 중복되는 텀 들은 하나만 저장하도록 할 수 있습니다.

다음은 "white fox, white rabbit, white bear" 문장을 unique 토큰 필터를 적용하지 않은 경우와 적용한 경우를 비교 한 예제입니다.

request
response
request
일반적인 "white fox, white rabbit, white bear" 문장 분석
GET _analyze
{
"tokenizer": "standard",
"filter": [
"lowercase"
],
"text": [
"white fox, white rabbit, white bear"
]
}
response
일반적인 "white fox, white rabbit, white bear" 문장 분석 결과
{
"tokens" : [
{
"token" : "white",
"start_offset" : 0,
"end_offset" : 5,
"type" : "<ALPHANUM>",
"position" : 0
},
{
"token" : "fox",
"start_offset" : 6,
"end_offset" : 9,
"type" : "<ALPHANUM>",
"position" : 1
},
{
"token" : "white",
"start_offset" : 11,
"end_offset" : 16,
"type" : "<ALPHANUM>",
"position" : 2
},
{
"token" : "rabbit",
"start_offset" : 17,
"end_offset" : 23,
"type" : "<ALPHANUM>",
"position" : 3
},
{
"token" : "white",
"start_offset" : 25,
"end_offset" : 30,
"type" : "<ALPHANUM>",
"position" : 4
},
{
"token" : "bear",
"start_offset" : 31,
"end_offset" : 35,
"type" : "<ALPHANUM>",
"position" : 5
}
]
}
request
response
request
unique 토크나이저로 "white fox, white rabbit, white bear" 문장 분석
GET _analyze
{
"tokenizer": "standard",
"filter": [
"lowercase",
"unique"
],
"text": [
"white fox, white rabbit, white bear"
]
}
response
unique 토크나이저로 "white fox, white rabbit, white bear" 문장 분석 결과
{
"tokens" : [
{
"token" : "white",
"start_offset" : 0,
"end_offset" : 5,
"type" : "<ALPHANUM>",
"position" : 0
},
{
"token" : "fox",
"start_offset" : 6,
"end_offset" : 9,
"type" : "<ALPHANUM>",
"position" : 1
},
{
"token" : "rabbit",
"start_offset" : 17,
"end_offset" : 23,
"type" : "<ALPHANUM>",
"position" : 2
},
{
"token" : "bear",
"start_offset" : 31,
"end_offset" : 35,
"type" : "<ALPHANUM>",
"position" : 3
}
]
}

"unique" 토큰 필터를 적용하면 "white" 텀이 하나만 저장된 것을 확인할 수 있습니다.

match 쿼리를 사용해서 검색하는 경우 unique 토큰 필터를 적용한 필드는 텀의 개수가 1개로 되기 때문에 TF(Term Frequency) 값이 줄어들어 스코어 점수가 달라질 수 있습니다. match 쿼리를 이용해 정확도(relevancy) 를 따져야 하는 검색의 경우에는 unique 토큰 필터는 사용하지 않는 것이 바람직합니다.