Skip to content

SearchEngine Research

baekkyu cho edited this page Aug 6, 2017 · 5 revisions

검색 프로세스

  • 데이터 수집 (크롤링)
  • 인덱싱 데이터 추출 (형태소 분석)
  • 데이터 인덱싱
  • 검색

참고

형태소 분석기

  • 형태소 분석기란?
    • 문장(오타 및 오류 포함)으로부터 형태소열로 바꾸는 작업을 말한다.
  • 형태소란
    • 형태소는 의미의 최소단위로써, 더 이상 분석 불가능한 가장 작은 의미 요소를 말한다.
    • e.g) "저는 자바개발자입니다.” => 자바 / 개발자 / 자바개발자

Lucene

  • apache top-class project
  • 고성능(high-performance), 정보검색(Information retrieval) 라이브러리
    • IR (Information Retrieval) => 문서를 검색하거나, 문서의 내용을 검색하거나, 문서와 연관된 메타 정보를 검색해 가는 과정
  • java로 개발됨
  • full-featured, text-search 검색엔진

ElasticSearch

  • lucene을 바탕으로 개발한 분산검색엔진
  • 설치와 서버확장(scale-out)이 매우 편리함
  • JSON기반으로 모든 문서를 저장, RESTFul API를 지원
  • Multi-tenancy 지원
    • 하나의 elasticsearch 서버에 여러 인덱스를 저장하고, 하나의 쿼리로 검색 가능
  • 다양한 Plugin을 이용해 확장이 가능함
    • e.g. Thrift, Jetty 플러그인을 이용해서 전송 프로토콜을 변경할 수 있음
  • 여러개의 노드로 구성된 분산검색엔진이다. index는 각각의 샤드마다 구성(0개이상의 복제본)된다.

ELK Stack

Logstash (데이터수집)

  • 오픈소스 server-side 데이터처리 파이프라인
  • 다양한 소스에서 동시에 데이터를 수집(Ingest)하여 변환한 후, 자주 사용하는 Stash 보관소로 보냄
  • Fluentd나, kafka 등도 많이 사용

Kibana (데이터시각화)

  • 데이터 시각화 도구 (시계열, 그래프, 지도기반 시각화 ...)
  • ElasticSearch로 검색한 데이터를 손쉽게 볼 수 있다.

참고

Clone this wiki locally