개발/개발관련

[개발관련] 검색엔진에 대한 간단한 조사

mabb 2023. 5. 30. 16:06
반응형

검색엔진은 어떠한 원리인지, 오픈소스 검색엔진에는 어떤 것들이 있는지 간단하게 조사해보았다.

OpenSource 검색엔진 상업적이용가능 한글지원 프로그래밍 가능 설치 및 사용 용이성 특징
Apache Lucene 오픈소스 라이브러리 형태소 분석기 필요 O 라이브러리로 이용
라이브러리 사용법 숙지 필요
Java기반. 색인과 검색기능 제공. 형태소 기능 추가로 필요. 프로그램(솔루션)이 아닌 소프트웨어 라이브러리이다.
Apache Solr 오픈소스 솔루션 한글 형태소 분석기 내장 (조사 필요) 운영서버에 설치, 컨피그, 실행
자체 솔루션 사용법 숙지 필요
Lucen기반 오픈소스 검색엔진. HTTP 요청에 따라 처리와 응답을 하는 웹 기반 솔루션이다. 기본적인 UI를 제공하고 독립적인 서버로 구현되어 이용에 용이하다.
Elasticsearch 오픈소스 솔루션

OSS라이센스기능만 가능

Basic버전은 협약 필요
 한글 형태소 분석기 내장 (조사 필요) 운영서버에 설치, 컨피그, 실행
자체 솔루션 사용법 숙지 필요
Lucen기반 오픈소스 검색엔진. HTTP 요청에 따라 처리와 응답을 하는 웹 기반 솔루션이다. 기본적인 UI를 제공하고 독립적인 서버로 구현되어 이용에 용이하다.

Solr
대비 데이터 수정이 잦은 경우 속도가 빠르고 더 다양한 형식에서 데이터를 수집할 수 있다.
Sphinx 오픈소스 솔루션 -CJK 미지원하나 CJK ngram characters설정으로 가능 ( 1글자씩 읽히는 단점) (조사 필요) 운영서버에 설치, 컨피그, 실행
사용법은 가장 간단하다고 함
다른 솔루션 대비 간단하고 가볍다.PHP,Ruby,Python등에서 유리. 백엔드가 DB인 경우 간단. 최소한의 설정으로 사용 가능 (특히 MySQL)

 

검색엔진에 대한 이해

▶ 검색엔진은 검색어 (문장이나 키워드 등) 을 통해 가장 유사한 데이터를 찾아주는 것

▶ 검색엔진은 1)수집, 2)색인, 3)검색 의 기능을 수행한다.
 1)수집: DB, 크롤링, 파일 등으로부터 데이터를 수집한다.
 2)색인: 수집한 데이터를 분석하고, 빠르게 찾을 수 있도록 저장하는 과정이다.
 3)검색: 최상의 검색 결과를 위한 알고리즘을 적용한다.

▶ 검색엔진에는 형태소를 분석하는 형태소 분석기가 필요하다. (일반적으로 명사만 추출한다고 했을 때)
    ㄴ. "자바와스프링의원리" => 자바, 스프링, 원리

▶ 형태소 분석으로 뽑아낸 키워드에 대해 역색인 작업을 한다. -> 키워드에 문서들의 Primary Key와 같은 값등을 매핑하여 저장하는 기술
    ㄴ. "키워드" :  해당키워드가 있는 자료의 색인  =>   "자바": 1, 2    "스프링": 2,3   "원리": 2,5,10  -> 관련 자료(교집합 등)을 우선순위로 출력한다.

반응형