인터넷 검색 엔진은 사람들이 현재 사용 가능한 수백 개에 달하는 웹 사이트에 저장된 정보를 찾을 수 있게 도와주도록 설계되었다.
인터넷 검색 엔진의 스파이더링
검색 엔진들은 수십 만에 이르는 페이지와 문서들의 색인을 포함하고 있으며 하루에 수천수만 회씩 조회된다. 오늘날 인기 있는 검색 엔진들은 수억 페이지에 달하는 색인을 가지고 있고, 매일 수천만 회나 되는 조회에 응답한다. 검색엔진이 여러분에게 파일이나 문서가 있는 위치를 알려주려면 먼저 그 파일이나 문서를 찾아야 한다. 기존의 수십억 개의 정보를 찾기 위해서 검색 엔진은 스파이더라고 불리는 특수한 소프트웨어 로봇을 이용한다. 이 로봇은 웹 사이트 상에서 발견되는 단어들의 목록을 작성한다. 스파이더가 페이지를 찾고 그 목록을 작성하는 과정을 스파이더링 또는 웹 크롤링이라고 한다. 대개 스파이더는 자주 사용되는 서버와 유명한 페이지들의 목록을 찾는 일부터 시작한다. 스파이더는 사람들이 많이 찾는 잘 알려진 페이지에서 시작해서 그 페이지의 모든 단어들의 색인을 만들고 그 사이트 속에 있는 링크를 따라간다. 스파이더링 시스템은 이런 방식으로 빠른 속도로 여행을 시작하고 웹의 가장 많이 사용된 영역을 가로질러 확산된다. 스파이더가 웹 페이지를 찾을 때 대개 최소한 다음과 같은 두 가지 점을 주목한다. 어떤 스파이더는 제목, 부제목, 메타 태그, 그리고 그밖에 상대적으로 중요한 위치에서 나타나는 단어들을 주목한다. 일반적으로 스파이더는 a, an, the와 같은 관사나 그밖에 일상적으로 사용되는 단어들을 제외하고 한 페이지에 나오는 모든 중요한 단어들을 색인으로 만든다. 이러한 간단한 최적화가 색인의 많은 공간을 절약해 준다.
색인 작성
스파이더들이 웹 페이지 상에서 모든 정보를 발견할 때, 검색 엔진은 그 정보를 유용하게 만드는 방식으로 저장해야 한다. 수집된 정보를 사용자들이 접근 가능하게 만들어주는 두 가지 핵심적인 구성요소가 있다. 그것은 데이터와 함께 저장되는 정보와 그 정보가 색인으로 만들어지는 방법이다. 가장 간단한 예에서 검색엔진은 단어와 URL만을 저장할 수 있다. 그러나 실제로는 이러한 특성이 검색 엔진의 이용을 제한되게 만든다. 왜냐하면 단어가 그 페이지에서 중요하게 이용되었는지 사소하게 이용되었는지, 또는 그 페이지가 그 단어를 포함하고 있는 다른 페이들에 대한 링크를 포함하는지 여부를 이야기해 줄 방법이 없기 때문이다. 검색 결과를 좀 더 유용하게 만들기 위해서 대부분의 검색 엔진들은 단어와 URL 이상의 내용을 저장한다. 엔진은 각각의 수록어에 대해서 가중치를 할당할 수 있다. 이 값은 문서의 앞부분, 부제목, 링크, 그 페이지의 제목 등에 가까운 위치에서 나타날수록 높아진다. 모든 상용 검색 엔진은 색인에 포함된 단어들에 가중치를 부여하는 공식이 저마다 다르다. 같은 단어를 검색해도 엔진에 따라서 다른 목록이 생성되고, 나타나는 페이지들의 순서가 제각기 다른 것은 그 때문이다. 색인의 목적은 하나이다. 그것은 가능한 한 빨리 정보를 찾게 하는 것이다. 색인을 작성하는 데에는 몇 가지 방법이 있다. 예를 들면 표준적인 SQL 데이터 베이스를 사용해서 검색 엔진을 만들 수 있다. 그러나 수십억 개의 수록 어를 가지고 있는 표준 데이터 베이스는 종종 성능 장벽에 부딪칠 수 있다. 고속 색인을 구축하기 위한 효율적인 방법은 해시 표이다. 해싱의 한 공식은 모든 단어에 수치를 부여하는 것이다. 이 공식은 미리 결정된 분할 숫자 전체에 걸쳐서 수록어들을 고르게 분포시키도록 설계된다. 이러한 수치적 분포는 알파벳에 의한 단어의 분포와는 다르며, 이것이 해시 표의 효율성의 핵심이다.
탐색 과정
색인을 통한 탐색은 사용자가 질문을 생각하고 그 물음을 검색 엔진을 통해 제기하는 과정을 포함한다. 이때 질문은 아주 단순할 수 있다. 작게는 하나의 단어가 될 수도 있다. 여러분이 한 단어짜리 질문을 검색 엔진에 제기하면 검색 엔진은 색인에서 그 단어를 포함하고 있는 모든 페이지를 찾아낸다. 그런 다음 엔진은 그 페이지들을 순위별로 분류한다. 예를 들면 그 단어를 가장 많이 사용하는 페이지가 제일 앞쪽에 배치될 수도 있다. 좀 더 복잡한 질문을 하려면 불 연산자를 사용해야 한다. 불 연산자는 탐색항목들을 세밀히 구분하고 확장시킬 수 있게 해 준다. 검색 엔진은 간단한 원리의 시스템이다. 그것은 웹상의 개별 페이지들로 이어지는 단어들이 색인으로 작성되어 있는 목록이다. 검색 엔진을 복잡하고 흥미롭게 만드는 세 가지 요소가 있다. 그것은 검색엔진이 색인으로 만드는 단어들의 숫자, 웹 상에서 접근할 수 있는 엄청난 숫자의 페이지들 그리고 매일같이 웹 상에서 일어나는 큰 변화이다. 검색 엔진의 설계와 건설은 중요한 공학적 업적이며, 그 결과 사람들이 매일같이 요구하는 수많은 사이트들을 쉽게 찾아주는 사용하기 편리한 시스템이 탄생했다.