은전한닢 검색 안되는 부분 문의

242 views
Skip to first unread message

이민우

unread,
Aug 22, 2018, 10:42:15 PM8/22/18
to 은전한닢 프로젝트
딱 엘라스틱서치 플러그인 자체만 적용해서 사용하고 있습니다. 
(한국어 사전 등은 엘라스틱서치 플러그인에 자체 내장되어 있다고 적혀있길래, 정말 플러그인만 적용했습니다.)

그런데, 은전한닢 사용 시 제 상식 선에서는 검색이 되어야하는데, 검색이 되지 않는 항목이 있어 문의드립니다.


1. 분석기 정보
"analysis": {
        "analyzer": {
          "seunjeon": {
            "type": "custom",
            "tokenizer": "seunjeon_default_tokenizer"
          },
        "tokenizer": {
          "seunjeon_default_tokenizer": {
            "type": "seunjeon_tokenizer"
          }
        }
      }

위와 같이 은전한닢 토크나이저만을 사용한 seunjeon 분석기를 생성했습니다.


2. 필드 매핑 정보
"address1": {
          "type": "text",
          "analyzer": "seunjeon"
        }

위와 같이 text 데이터 타입의 seunjeon 분석기를 적용했습니다.
별도 search_analyzer를 선언해주지 않으면, 색인 시 뿐만 아니라, 쿼리 질의 시에도 분석기가 돌아가는 것으로 알고있습니다.


3. 저장된 토큰 정보
"서울특별시" 저장 시 아래와 같이 토큰이 저장됨을 확인했습니다.

"terms": {
        "서울/N": {
          "term_freq": 1,
          "tokens": [
            {
              "position": 0,
              "start_offset": 0,
              "end_offset": 2
            }
          ]
        },
        "시/N": {
          "term_freq": 1,
          "tokens": [
            {
              "position": 2,
              "start_offset": 4,
              "end_offset": 5
            }
          ]
        },
        "특별/N": {
          "term_freq": 1,
          "tokens": [
            {
              "position": 1,
              "start_offset": 2,
              "end_offset": 4
            }
          ]
        },
        "특별시/EOJ": {
          "term_freq": 1,
          "tokens": [
            {
              "position": 1,
              "start_offset": 2,
              "end_offset": 5
            }
          ]
        }
      }


4. 검색 쿼리
"query": {
    "match": {
      "address1": {
        "query": "서울시"
      }
    }
  }

위와 같이 "서울시"로 검색했습니다.
--> 검색결과 "서울특별시"가 나오지 않았습니다.


5. 은전한닢 분석기로 "서울시" 분석 결과
아래와 같이 "서울시" 단어에 대해 토큰 분해하는 것을 확인했습니다.
"tokens": [
    {
      "token": "서울/N",
      "start_offset": 0,
      "end_offset": 2,
      "type": "N",
      "position": 0
    },
    {
      "token": "서울시/EOJ",
      "start_offset": 0,
      "end_offset": 3,
      "type": "EOJ",
      "position": 0,
      "positionLength": 2
    },
    {
      "token": "시/N",
      "start_offset": 2,
      "end_offset": 3,
      "type": "N",
      "position": 1
    }
  ]


match쿼리를 썼기때문에 쿼리 질의 시 검색어에 대해 분석이 진행됬을 거라고 추측되구요,. 
그렇다면 "서울특별시" , "서울시" 모두 "서울/N" 이라는 토큰을 가지고 있는데, 왜 검색이 안되는지 모르겠습니다..
동일한 토큰인데 왜 검색이 안되는 걸까요?
위 내용 뿐만 아니라, search_analyzer로 은전한닢을 붙여보기도하고, 쿼리 질의 시 analyzer을 은전한닢으로 적용도 해봤으나, 검색이 안됩니다.

원인을 아시는 분이 계시다면, 답변 달아주시면 감사하겠습니다!!

이민우

unread,
Aug 23, 2018, 8:15:14 PM8/23/18
to 은전한닢 프로젝트
사용하고 있는 은전한닢 플러그인은
mecab-ko + mecab-ko-dic + elasticsearch-analysis-mecab-ko 가 아닌,
 elasticsearch-analysis-seunjeon 사용 중입니다. 

이민우

unread,
Sep 4, 2018, 12:51:17 AM9/4/18
to 은전한닢 프로젝트
품사문제일까 싶어서 "pos_tagging": "false" 값도 주고 해봤는데, 동일하게 안됩니다.
Reply all
Reply to author
Forward
0 new messages