ElasticSearchSearch EngineQuery

엘라스틱 서치 필터링

·4 min read

엘라스틱에서는 filter 항목이 존재한다.

nori 분석기가 텍스트를 분석하고, 검색에 굳이 필요없는 품사들을 버리는 목록이다.

"filter": {
    "nori_posfilter": {
        "type": "nori_part_of_speech",
            "stoptags": [
                "E", "IC", "J", "MAG", "MM", "SP", "SSC", "SSO",
                "SC", "SE", "XPN", "XSA", "XSN", "XSV", "UNA", "NA", "VSV"
            ]
    }
}

영문자로 구성된 약어들로 품사를 정의하는데 구분은 다음과 같다.

문법적 기능어

문법적 관계를 나타내는 기준이다.

J(Josa, 조사)

은, 는, 이, 가, 을, 를, 에, 에서 등 명사 뒤에 붙는 말이다.

예를들어 감자는, 감자가 라는 문장에서 감자만 찾고 싶은 경우,

조사를 지워야 "감자" 라는 핵심만 남는다.

E(Eomi, 어미)

-다, -고, -니, -어서 등 용언(동사/형용사)의 끝부분이다.

감자를 볶고, 볶으니, 볶아서 에서 어미를 버려야

볶다(볶)이라는 행위의 본질만 남는 것이다.

수식언 및 감탄사(꾸며주는 말)

문장에 맛을 살려주지만, 검색에는 도움 안되는 경우 제거한다.

MAG(General Adverb, 일반 부사)

매우, 빨리, 잘, 몹시 등이 해당한다.

"매우 맛있는 감자"를 검색 할 때, 매우의 중요도는 낮다.

"맛있는"과 "감자"가 중요할 떄 사용한다.

MM(Determiner, 관형사)

새, 헌, 이, 그, 저 등등

"이 감자"나 "저 감자"나 본질은 "감자"다.

구체적인 지시어가 필요 없는 경우 제거한다.

IC(Interjection, 감탄사)

아이고!, 어머!, 와! 등

감탄사 필요한거 아니면 의미없다.

접사(단어의 일부)

접사를 제거한다는 것은 단어를 좀더 원형에 가깝게 쪼갠다는 것이다.

XPN(Noun Prefix, 체언 접두사)

햇-(햇감자), 풋-(풋감자) 등의 접두사를 의미한다.

다만 접사를 제거하면 부가적인 특성(햇감자)을 잃을 수 있기 때문에 주의해야한다.

XSN(Noun Suffix, 명사 파생 접미사)

-님, -들, -쯤 등

XSV(Verb Suffix, 동사 파생 접미사) / XSA(Adjective Suffix, 형용사 파생 접미사)

-하(사랑하다), -되(건설되다.,) -스럽(사랑스럽다) 등 사용하기 복잡한 형용사를 제거하는데 사용해,

어근 중심으로 인덱싱 하는 경우 사용한다.

기호 및 분석 불가능/기타

검색에 도움 안되는 특수문자나 분석기가 인식하지 못한 단어들을 의미한다

기호류: SP (공백), SSC (닫는 괄호), SSO (여는 괄호), SC (구분자/쉼표), SE (줄임표 ...).

분석 불가/미상: UNA (Unknown), NA (Unknown), VSV (Unknown Verb 등 미상 태그).

등으로 구분되서

분석기가 "이게 뭔지 모르겠다" 라고 판단하는 것들을 제외하는 경우다.

위에꺼 다 적용하면?

"아이고! 정말 맛있는 햇감자를 물에 삶아서 드세요."

위 단어는 최종적으로 아래 인덱스로 분류된다.

[맛있], [감자], [물], [삶], [드]

← Previous
엘라스틱 서치 개념 잡기
Next →
RDBMS와 B+Tree