검색 엔진(search engine) 이란?
웹에 존재하는 많은 양의 정보 중에서 사용자가 원하는 정보만을 여러 웹 사이트나 웹 페이지 등에서 검색해 주는 시스템이나 프로그램 등을 통틀어 말한다.
검색 엔진 원리(로봇 검색 엔진)
1. Crwaling: 정보 찾기
크롤러(또는 스파이더)란 웹상의 문서나 이미지, 영상 등을 주기적으로 검색하고 취합하여, 자동으로 데이터베이스화시키는 프로그램으로 봇(Bot)이라고도 부릅니다.
google의 크롤러 이름은 Goolgebot, naver의 크롤러 이름은 Yeti
-
크롤러가 웹사이트를 옮겨 다니면서 정보를 수집한다.
-
새로운 웹페이지나 기존의 웹페이지지만 업데이트된 정보가 있으면 방문을 하게 된다.
-
이때, 공개된 사이트의 정보만 수집하는데 이는 크롤러가 robots.txt파일을 통해 확인한다.
robots.txt에서 "허용한다"라고 하면 정보를 가져오고,
"허용하지 않는다"하면 정보를 가져오지 않는다.
다음은 네이버 웹마스터도구에서 확인할 수 있는 robots.txt 내용이다.
2. Indexing: 컨텐츠 색인
- 색인된 페이지는 거대한 데이터베이스에 저장하게 된다.
- 인덱싱의 과정은 특정 키워드로 웹페이지를 할당하고 단어와 내용이 웹페이지를 위한 최선의 설명인지 확인하는 과정이다.
3. Process: 검색 처리
- 검색을 시작하면 검색엔진이 검색어와 데이터베이스에 색인하여 저장된 웹페이지를 비교한다.
- 그 수백만개의 웹페이지들 중에서 키워드 관련성을 체크하기 위해 계산을 한다.
4. Calculating Relevancy: 관련도 계산
- 관련도 계산(Calculating Relevancy) 하기 위한 알고리즘은 굉장히 다양해서 각각의 알고리즘은 키워드, 링크, 메타태그 등 다른 관련성의 비중을 두어 체크하게 된다.
- 이러한 이유로 같은 키워드로 구글, 야후 등 다른 검색엔진에서 검색 시 같지 않은 검색 결과를 보여주는 것이다.
5. Retrieving: 검색결과 가져오는 과정
- 브러우저에서 검색 결과를 확인할 수 있도록 웹페이지들을 구분, 정리하여 볼 수 있다.
검색 엔진 개발을 위한 오픈 소스
검색 엔진 개발을 위한 오픈 소스 중에는 여러 개가 있지만 그중에 대표적인 Elastic Search와 Solr Search를 비교해보았다.
Elastic Search | Solr Search | |
데이터 사이즈 | 주로 사이즈가 작은 데이터 검색에 용이 | 주로 사이즈가 큰 데이터 검색에 용이 |
데이터 import | JDBC, Git, MongoDB, Redis, RSS, SVN, Twitter 등 | JDBC, XML, URL, FileSystem등 |
실시간 인덱싱 | 실시간 | 준실시간 |
스키마 변경 | 즉시 적용 | 재가동 후 적용 |
수정 | 수정 데이터만 재색인 | 전체 데이터 재색인 |
API 호출 타임 | Json | XML, CSV, Json |
공식 지원 언어 | Go, Haskell, Java, Javascript, PHP, Python 등 | Java |
인덱스간 조인 | 지원하지 않음 | 지원 |
검색속도 | 빠름 | 느림 |
728x90
'DevOps > Elastic Stack' 카테고리의 다른 글
ElasticSearch 기초 문법 사용법 + Postman에서 테스트 하는 방법 :: DANIDANI (2) | 2021.04.12 |
---|---|
Logstash로 MySQL과 AWS ElasticSearch 연동 + Kibana 사용 :: DANIDANI (0) | 2021.04.11 |
AWS ElasticSearch 구축 및 기초 세팅 :: DANIDANI (0) | 2021.04.11 |