한국어 Full-Text Search 사용하기

Development / Elasticsearch / MySQL / Full-Text Search

예전에 Full-Text Search를 구현해야 할 때에는 항상 Elasticsearch를 설치한 뒤에, 이를 원래 Data source(MySQL, MongoDB..)와 Rivering하고, MeCab-Ko(은전한닢) Plugin을 이용해 한국어 형태소 분석을 했었다. 이번에 신규로 검색 기능을 구현해야 하는데, 어떻게 하면 가장 효율적일지(차후 서비스 운용 부분에 있어서까지) 고민중이다.

  • MySQL Full-Text Search를 활용하는 법
    • MySQL 5.6 미만에서는 MyISAM Table에 한해서 Full-Text Search가, 5.6 부터는 InnoDB와 MyISAM 모두 사용할 수 있다고 한다.
    • MySQL 5.7 부터는 MeCab을 내장해서 나온다고 한다. 5.6 이하에 대해서는 MeCab이 기본 내장은 아니기에 CJK 언어에 대해서 플러그인이 필요하다고 한다.
    • 하지만 우리는 5.6을 사용하고 있을 뿐만 아니라, AWS의 RDS에서 MySQL을 운용하고 있기 때문에, 임의의 플러그인을 설치할 수 없다.(고 생각된다.)
    • 5.7로 업데이트도 현재(2015년 10월 27일)는 불가능함. 물론 업데이트 한다고 해도 말뭉치 사전을 깔아야 하기에..
    • 일단 설치가 된다고 하면, 운영 측면에서 다른 Stand-Alone 서버를 띄울 필요도 없고 해서 가장 좋을 것 같지만.. 포기!
    • konlpy(MeCab-ko? Twitter? 뭐가 되었든)를 활용해서 아에 WAS 레벨에서 사용자 검색어에 대한 형태소 분석을 따로 진행하고, 분석된 내용을 가지고 DB에 검색하는 방법은 어떠할까?: 귀찮. 그리고 원래 검색 대상 문장이 인덱싱이 되어있지 않다면 무슨 소용이람!
  • Solr를 활용하는 법
    • 안 알아봄.
  • Elasticsearch를 계속 쓰는 법
    • AWS Elasticsearch Service를 사용하는 방법
      • 최근 AWS에서 ES를 제공하기 시작했다. 인스턴스 관리나 클러스터링, 모니터링 등에 훨씬 유리하기에 이놈을 쓰고 싶었지만..
      • 결국 MySQL에서의 문제처럼 내가 원하는 플러그인(MySQL Rivering, MeCab-ko 등)을 설치할 수 없다.
      • 사용 불가.
    • Elastic Cloud(Elastic as a Service, Found)를 활용하는 법
      • Featured 된 플러그인을 제공해준다는 말에 혹해서 들어감!
      • 하지만 (플러그인으로)제공되는 언어는 중국어, 일본어, 폴란드어..ㅎㅎㅎ.. 국력을 높여야겠습니다.
    • Stand-Alone Elasticsearch 운용하는 방법
      • 결국 구관이 명관이라.. 그냥 이 방법으로 해야겠다. 가자! EC2 띄우러!
Share on : Twitter, Facebook or Google+