검색 엔진 (컴퓨팅)

컴퓨팅에서 **검색 엔진**(search engine)은 하나 이상의 컴퓨터 시스템에 저장된 정보를 찾는 데 도움을 주도록 설계된 정보 검색 소프트웨어 시스템이다. 검색 엔진은 사용자 질의에 응답하여 정보를 발견하고, 크롤링하고, 변환하고, 저장한 후 검색 및 표시한다. 검색 결과는 일반적으로 목록으로 제공되며 일반적으로 히트(hits)라고 불린다. 가장 널리 사용되는 검색 엔진 유형은 월드 와이드 웹에서 정보를 검색하는 웹 검색 엔진이다.

검색 엔진은 일반적으로 검색 인터페이스, 크롤러(스파이더 또는 봇이라고도 함), 색인기, 데이터베이스의 네 가지 구성 요소로 구성된다. 크롤러는 문서 모음을 탐색하고, 문서 텍스트를 해체하며, 검색 엔진 색인에 저장할 대체 데이터를 할당한다. 온라인 검색 엔진은 문서의 이미지, 링크 데이터 및 메타데이터를 저장한다.

## 검색 엔진의 작동 방식
검색 엔진은 사용자가 관심 항목에 대한 기준을 지정하고 엔진이 일치하는 항목을 찾을 수 있도록 하는 항목 그룹에 대한 인터페이스를 제공한다. 이 기준은 검색 쿼리라고 한다. 텍스트 검색 엔진의 경우, 검색 쿼리는 일반적으로 하나 이상의 문서가 포함할 수 있는 원하는 개념을 식별하는 단어 집합으로 표현된다. 엄격함에 따라 여러 스타일의 검색 쿼리 통사론이 있다. 이전 사이트에서 검색 엔진 내에서 이름이 변경될 수도 있다. 일부 텍스트 검색 엔진은 사용자에게 공백으로 구분된 두세 단어를 입력하도록 요구하는 반면, 다른 검색 엔진은 사용자가 전체 문서, 사진, 소리 및 다양한 형태의 자연어를 지정할 수 있도록 한다. 일부 검색 엔진은 쿼리 확장이라고 알려진 프로세스를 통해 고품질 항목 집합을 제공할 가능성을 높이기 위해 검색 쿼리에 개선 사항을 적용한다. 쿼리 이해 방법은 표준화된 쿼리 언어로 사용될 수 있다.

right|섬네일|색인 기반 검색 엔진

쿼리에서 지정한 기준을 충족하는 항목 목록은 일반적으로 정렬되거나 순위가 매겨진다. 관련성(가장 높음에서 가장 낮음)에 따라 항목 순위를 매기면 원하는 정보를 찾는 데 필요한 시간이 줄어든다. 확률적 검색 엔진은 항목을 유사성 측정(각 항목과 쿼리 간의 유사성, 일반적으로 1에서 0까지의 척도, 1이 가장 유사함) 및 때로는 인기 또는 권위(계량서지학 참조)를 기반으로 순위를 매기거나 관련성 피드백을 사용한다. 불 대수 검색 엔진은 일반적으로 순서에 관계없이 정확히 일치하는 항목만 반환하지만, 불 대수 검색 엔진이라는 용어는 확률적 맥락에서 불 대수 스타일 구문(연산자 논리곱, 논리합, NOT 및 배타적 부정 논리합 사용)을 사용하는 것을 의미할 수도 있다.

검색 엔진은 특정 기준에 따라 정렬된 일치 항목 집합을 신속하게 제공하기 위해 일반적으로 색인이라고 하는 프로세스를 통해 미리 고려 중인 항목 그룹에 대한 메타데이터를 수집한다. 색인은 일반적으로 더 적은 양의 컴퓨터 저장소를 필요로 하므로, 일부 검색 엔진은 색인된 정보만 저장하고 각 항목의 전체 내용은 저장하지 않으며, 대신 검색 엔진 결과 페이지에서 항목으로 이동하는 방법을 제공한다. 또는 검색 엔진은 각 항목의 사본을 캐시에 저장하여 사용자가 항목이 색인된 시점의 상태를 보거나 아카이브 목적으로 사용하거나 반복 프로세스를 더 효율적이고 빠르게 작동하도록 할 수 있다.

다른 유형의 검색 엔진은 색인을 저장하지 않는다. 크롤러 또는 스파이더 유형 검색 엔진(실시간 검색 엔진이라고도 함)은 검색 쿼리 시점에 항목을 수집하고 평가할 수 있으며, 시작 항목(인터넷 크롤러의 경우 시드 또는 시드 URL이라고 함)의 내용에 따라 추가 항목을 동적으로 고려할 수 있다. 메타 검색 엔진은 색인이나 캐시를 저장하지 않고 대신 하나 이상의 다른 검색 엔진의 색인 또는 결과를 단순히 재사용하여 집계된 최종 결과 집합을 제공한다.

2000년대 초반까지 중요한 마케팅 특징이었던 데이터베이스 크기는 검색 엔진이 최상의 결과를 먼저 정렬하려는 방식인 관련성 순위 지정에 대한 강조로 대체되었다. 관련성 순위 지정은 년경에 결과의 전체 목록을 검토하는 것이 비실용적이라는 것이 분명해지면서 주요 문제가 되었다. 결과적으로 관련성 순위 지정 알고리즘은 지속적으로 개선되었다. Google의 결과 순위 지정 페이지랭크 방법이 가장 많이 보도되었지만, 모든 주요 검색 엔진은 결과 순위 지정을 개선하기 위해 순위 지정 방법론을 지속적으로 개선하고 있다. 2006년 현재 검색 엔진 순위는 그 어느 때보다 중요해져서, 웹 개발자가 검색 순위를 높이는 데 도움이 되는 산업("검색 엔진 최적화자" 또는 "SEO")이 발전했으며, 메타 태그에 상표를 사용하는 것과 같이 검색 엔진 순위에 영향을 미치는 문제에 대해 전체 판례가 발전했다. 일부 검색 엔진의 검색 순위 판매는 사서 및 소비자 옹호자들 사이에서 논란을 야기하기도 했다.
섬네일|Google의 "지식 패널". 지식 그래프의 정보가 사용자에게 표시되는 방식이다.
사용자를 위한 검색 엔진 경험은 계속 향상되고 있다. Google의 구글 지식 그래프 추가는 인터넷에 더 넓은 영향을 미쳤으며, 예를 들어 위키백과와 같은 특정 웹사이트 트래픽을 제한할 수도 있다. 정보를 가져와 Google 페이지에 표시함으로써 일부 사람들은 다른 사이트에 부정적인 영향을 미칠 수 있다고 주장한다. 그러나 큰 우려는 없었다.

## 검색 엔진 범주
### 웹 검색 엔진

웹 페이지, 문서 및 이미지를 검색하도록 명시적으로 설계된 검색 엔진은 대규모의 모호한 비구조화된 리소스 덩어리를 검색하는 것을 용이하게 하기 위해 개발되었다. 이들은 여러 단계의 프로세스를 따르도록 설계되었다: 무한한 페이지와 문서를 크롤링하여 내용에서 비유적인 거품을 걷어내고, 거품/버즈워드를 일종의 반구조화된 형태(데이터베이스 등)로 색인화한 다음, 마지막으로 사용자 입력/쿼리를 해결하여 인벤토리에서 해당 거품이 제거된 문서나 페이지에 대한 대부분 관련성 있는 결과와 링크를 반환한다.

#### 크롤링
전적으로 텍스트 검색의 경우, 웹 페이지 분류의 첫 번째 단계는 '검색어'와 명시적으로 관련될 수 있는 '색인 항목'을 찾는 것이다. 과거에는 검색 엔진이 소위 시드 목록으로 작은 URL 목록으로 시작하여 콘텐츠를 가져오고 해당 페이지의 링크를 관련 정보에 대해 구문 분석하여 새로운 링크를 제공했다. 이 프로세스는 매우 순환적이었고 검색자가 사용할 수 있는 충분한 페이지를 찾을 때까지 계속되었다.
요즘은 시드 목록을 기반으로 한 우발적인 발견 방식과는 달리 연속적인 크롤링 방식을 사용한다. 크롤링 방식은 앞서 언급한 발견 방식의 확장이다.

대부분의 검색 엔진은 특정 페이지를 언제 다시 방문할지 "결정"하기 위해 정교한 스케줄링 알고리즘을 사용하여 관련성을 높인다. 이러한 알고리즘은 더 자주 변경되는 페이지에 더 높은 우선순위를 부여하는 일정한 방문 간격부터 변경 빈도, 인기도, 사이트의 전반적인 품질 등 여러 기준에 따라 적응형 방문 간격까지 다양하다. 페이지를 실행하는 웹 서버의 속도와 하드웨어 또는 대역폭 양과 같은 리소스 제약도 고려된다.

#### 링크 맵
웹 크롤링에 의해 발견된 페이지는 종종 분산되어 발견된 리소스의 맵을 생성하는 다른 컴퓨터로 전송된다. 묶인 클러스터 덩어리는 그래프와 비슷하게 보이며, 여기서 다른 페이지는 페이지 간의 링크로 연결된 작은 노드로 표시된다.
과도한 데이터는 특정 웹 페이지를 가리키는 링크 수에 따라 웹 페이지의 인기도 점수를 계산하는 특정 알고리즘에 의해 해당 데이터에 대한 빠른 액세스를 허용하는 여러 데이터 구조에 저장된다. 이것이 사람들이 정신병 진단과 관련된 수많은 리소스에 액세스할 수 있는 방법이다. 또 다른 예는 단순히 '이집트'를 검색어로 입력한 후 카이로에서 방문할 수 있는 최고의 명소와 모하메드 모르시에 대한 정보가 포함된 웹 페이지의 접근성/순위이다. 구글 설립자 래리 페이지와 세르게이 브린이 제안한 페이지랭크와 같은 한 알고리즘은 잘 알려져 있으며, 구글에서 주제를 제대로 연구하는 방법을 모르는 학생들 덕분에 웹 검색의 반복적인 평범함을 강조하기 때문에 많은 주목을 받았다.

인기도 순위를 계산하기 위한 링크 분석 아이디어는 페이지랭크보다 오래되었다. 그러나 2014년 10월, 구글의 존 뮬러는 구글이 더 이상 페이지랭크를 업데이트하지 않을 것이라고 확인했다. 동일한 아이디어의 다른 변형들이 현재 사용 중이다 – 초등학생들도 킥볼 팀을 고를 때 비슷한 종류의 계산을 한다. 이러한 아이디어는 개별 페이지의 순위와 웹사이트 콘텐츠의 특성이라는 세 가지 주요 범주로 분류할 수 있다. 검색 엔진은 종종 내부 링크와 외부 링크를 구별하는데, 웹 콘텐츠 제작자들이 노골적인 자기 홍보에 익숙하기 때문이다. 링크 맵 데이터 구조는 링크에 내장된 앵커 텍스트도 일반적으로 저장하는데, 앵커 텍스트가 웹 페이지 콘텐츠에 대한 "매우 좋은 품질" 요약을 제공할 수 있기 때문이다.

### 데이터베이스 검색 엔진
데이터베이스에서 텍스트 기반 콘텐츠를 검색하는 것은 몇 가지 특별한 문제를 제시하며, 이로 인해 여러 전문 검색 엔진이 번성한다. 데이터베이스는 복잡한 쿼리(여러 논리적 또는 문자열 일치 인수를 포함하는)를 해결할 때 느릴 수 있다. 데이터베이스는 전문 텍스트 검색에서 사용하지 않는 의사 논리 쿼리를 허용한다. 데이터는 이미 구조화되어 있으므로 데이터베이스에는 크롤링이 필요하지 않다. 그러나 더 빠른 검색을 허용하기 위해 데이터를 더 경제적인 형태로 색인화하는 것이 종종 필요하다.

### 혼합 검색 엔진
때로는 검색된 데이터에 데이터베이스 콘텐츠와 웹 페이지 또는 문서가 모두 포함된다. 검색 엔진 기술은 두 가지 요구 사항에 모두 응답하도록 개발되었다. 대부분의 혼합 검색 엔진은 Google과 같은 대형 웹 검색 엔진이다. 이들은 구조화된 데이터와 비정형 데이터 소스 모두를 검색한다. 예를 들어 '공'이라는 단어를 살펴보자. 가장 간단한 용어로는 위키백과에서만 40가지가 넘는 변형이 나온다. 사교 모임/춤으로서의 공을 의미하는가? 축구공? 발바닥의 공? 페이지와 문서는 별도의 색인에서 크롤링되고 색인화된다. 데이터베이스도 다양한 소스에서 색인화된다. 그런 다음 이러한 여러 색인을 병렬로 쿼리하고 "규칙"에 따라 결과를 조합하여 사용자에게 검색 결과가 생성된다.

## 검색 기술의 역사

### 메멕스

하이퍼텍스트와 기억 확장 개념은 버니바 부시가 쓴 1945년 7월 디 애틀랜틱 먼슬리에 게재된 "우리가 생각할 수 있듯이"라는 제목의 기사에서 유래한다. 이 기사에서 버니바는 과학자들에게 모든 인류를 위한 지식 체계를 구축하는 데 협력할 것을 촉구했다. 그런 다음 그는 사실상 무한하고 빠르며 신뢰할 수 있고 확장 가능하며 연관 메모리 저장 및 검색 시스템이라는 아이디어를 제안했다. 그는 이 장치를 메멕스라고 불렀다.

부시는 "연관 색인" 개념을 자신의 핵심 개념 기여로 여겼다. 그가 설명했듯이, 이것은 "어떤 항목이든 마음대로 즉시 자동으로 다른 항목을 선택하도록 할 수 있는 조항이다. 이것이 메멕스의 본질적인 특징이다. 두 항목을 연결하는 과정이 중요하다."

메멕스에 사용되는 모든 문서는 마이크로필름 사본 형태로 얻거나, 개인 기록의 경우 기계 자체에 의해 마이크로필름으로 변환된다. 메멕스는 또한 새로운 종류의 연관 색인을 기반으로 하는 새로운 검색 기술을 사용할 것이며, 그 기본 아이디어는 어떤 항목이든 마음대로 즉시 자동으로 다른 항목을 선택하도록 하여 연결된 문서들을 통해 개인적인 "경로"를 만들 수 있는 조항이다. 부시가 예상했던 정보 저장 및 검색을 용이하게 하는 새로운 절차는 완전히 새로운 형태의 백과사전 개발로 이어질 것이다.

부시가 구상한 가장 중요한 메커니즘은 연관 경로이다. 이는 개인적인 의견과 보조 경로와 함께 방금 설명한 방식으로 연결된 링크의 연결된 시퀀스를 생성함으로써 임의의 마이크로필름 프레임 시퀀스에 걸쳐 새로운 선형 마이크로필름 프레임 시퀀스를 생성하는 방법이 될 것이다.

1965년, 부시는 도서관 사용을 위한 정보 처리 자동화 기술 개발을 위한 MIT의 INTREX 프로젝트에 참여했다. 1967년 "Memex Revisited"라는 에세이에서 그는 디지털 컴퓨터, 트랜지스터, 비디오 및 기타 유사한 장치의 개발이 그러한 자동화의 실현 가능성을 높였지만, 비용이 그 성과를 지연시킬 것이라고 지적했다.

### SMART
1995년 8월 28일 사망한 제라드 살튼은 현대 검색 기술의 아버지였다. 하버드와 코넬의 그의 팀은 SMART 정보 검색 시스템을 개발했다. Salton의 Magic Automatic Retriever of Text에는 벡터 공간 모델, 역문서 빈도(IDF), 용어 빈도(TF), 용어 구별 값, 관련성 피드백 메커니즘과 같은 중요한 개념이 포함되었다.

그는 56페이지 분량의 "A Theory of Indexing"이라는 책을 저술했는데, 이 책은 그가 수행한 많은 테스트를 설명했으며, 검색은 여전히 대부분 이 테스트를 기반으로 한다.

### 문자열 검색 엔진
1987년, 217,600개의 트랜지스터가 8.62x12.76mm 다이 영역에 배치된 이중 금속 1.6-μm n-웰 CMOS 솔리드 스테이트 회로에서 빠른 텍스트 검색을 위한 문자열 검색 엔진(SSE) 개발을 상세히 설명하는 기사가 발표되었다. SSE는 512단계 유한 상태 오토마타(FSA) 로직과 내용 주소 지정 가능 메모리(CAM)를 결합하여 초당 8천만 문자열의 근사 문자열 비교를 달성하는 새로운 문자열 검색 아키텍처를 수용했다. CAM 셀은 4개의 기존 SRAM(정적 RAM) 셀과 읽기/쓰기 회로로 구성되었다. 64개의 저장된 가변 길이 문자열의 동시 비교는 초당 천만 문자의 입력 텍스트 스트림에 대해 50ns 안에 달성되어 문자 코드 형태의 단일 문자 오류가 존재하더라도 성능을 허용했다. 또한 이 칩은 비앵커 문자열 검색 및 가변 길이 '관심 없음'(VLDC) 문자열 검색을 허용했다.

## 같이 보기

### 출처별
* 데이터베이스 검색 엔진
* 데스크톱 검색
* 엔터프라이즈 검색
* 연합 검색
* 인간 검색 엔진
* 메타 검색 엔진
* 멀티 검색
* 검색 애그리게이터
* 웹 검색 엔진

### 콘텐츠 유형별

* 오디오 검색 엔진
* 전문 검색
* 이미지 검색
* 비디오 검색 엔진

### 인터페이스별

* 증분 검색
*즉시 응답
* 시맨틱 검색
* 선택 기반 검색
* 음성 검색

### 주제별

* 서지 데이터베이스
* 엔터프라이즈 검색
* 의학 문헌 검색
* 수직 검색

### 기타

* 자동 요약
* 에마누엘 골드베르크 (초기 검색 엔진 발명가)
* 색인 (검색 엔진)
* 역색인
* 검색 엔진 목록
* 서비스형 검색
* 검색 엔진 색인
* 검색 엔진 최적화
* 검색 제안 드롭다운 목록
* 솔버 (컴퓨터 과학)
* 스팸덱싱
* SQL
* 텍스트 마이닝
* 웹 크롤러
* 단어 의미 중의성 해소 (중의성 처리)

## 각주

분류:정보 검색 시스템