웹 검색 엔진
웹 검색 엔진이란 웹 사이트를 검색하기 위한 프로그램이다. 어떤 검색 엔진들은 FTP 서버나 웹 사이트의 파일 검색 결과를 포함하며, 이미지나 토렌트 파일 또는 특정 부류의 웹사이트에 특화된 웹 검색 엔진도 있다.
웹 검색 엔진은 대개 웹 서비스로 이용할 수 있다. 서버에서는 '로봇'(robot)이라 불리는 특별한 프로그램을 이용해 웹 사이트들을 돌아다니며 웹 사이트들에 대한 정보를 미리 자동적으로 수집한다. 이후 검색 엔진 사이트에서 특정 검색어를 입력하면 검색 엔진이 수집한 정보 중 그에 맞는 결과를 볼 수 있다. 많은 포털 사이트들은 이와 같은 웹 검색 서비스를 제공한다. 포털 사이트의 검색 결과 페이지에서는 사람이 직접 관리하는 웹 사이트의 모음인 웹 디렉터리의 결과를 함께 보여 주기도 한다. 초기 검색 엔진은 웹 디렉터리를 기반으로 하고 있었지만 지금은 웹 디렉터리를 검색 엔진이라 하지 않는 편이다.
웹 검색 엔진은 본래 컴퓨터 내의 파일이나 회사, 조직 내부 데이터베이스 등을 검색하기 위한 방법의 연장선상에 있다. 다만 웹은 하이퍼텍스트 기반으로 이루어져 있으며 문서와 이미지나 동영상 등이 결합되어 있으므로, 로봇이 참조와 어휘를 분석하는 방식에 따라 검색의 품질이 결정된다.
웹 초기엔 팀 버너스리가 정리한 CERN위에서 구동되는 웹서버의 목록이 있었다. 1992년에나 있었을법한 역사적 장면이다. 시간이 갈수록 더 이상 그 목록을 유지할 수 없을만큼 웹서버가 늘어났다. 당시 NCSA 사이트에는 새로운 서버가 생기면 "신착안내" 코너에 공지되었다. 인터넷의 최초 검색 도구는 아키였다. 아키는 아카이브에서 v를 뺀 단어로, 1990년에 맥길대 컴퓨터 공학과의 알란 엠테이지와 빌 힐런, 피터 도이치 3인이 만들었다. 이 프로그램은 공개 FTP 서버에 있는 모든 파일의 디렉토리 목록을 내려받아 검색가능한 데이터베이스로 만들었다. 하지만 아키는 색인과정을 거치지 않았기 때문에 용량 제한이 있었고, 수동으로 관리해야 했다.
고퍼의 성장으로 베로니카와 저그헤드라는 두개의 새로운 프로그램이 생겨났다. 고퍼는 미네소타 대학의 마크 맥카힐이 1991년에 만든 다단계 정보분류 통신규약이다. PC통신과 비슷한 것이었다. 아키처럼 베로니카나 저그헤드도 고퍼 서버에 저장된 파일명과 설명제목을 검색했다. 베로니카는 고퍼 목록에 있는 대부분의 제목 검색을 지원했다. 저그헤드는 몇몇 고퍼 서버의 메뉴 정보를 얻는 도구였다. 아키는 원래 만화책인 아키 시리즈와 관계없이 지어진 이름이지만 베로니카나 저그헤드는 그 시리즈의 주인공 이름이니, 이 후배들은 적어도 작명에서는 선배 검색도구를 나름 참조한 셈이다. (아키의 개발자인 엠테이지는 그 만화를 싫어했다.)
1993년 여름까지 수작업으로 만들어진 몇몇 목록들을 빼고는 웹을 위한 검색 엔진이 없었다. 제네바 대학의 오스카 니에르스트라츠는 이 목록들을 주기적으로 복사하여 표준화하는 펄 프로그램을 짰다. 이렇게 표준화된 목록은 1993년 9월 2일에 공개된 최초의 원시적 검색엔진인 W3카탈로그의 기초가 되었다. 1993년 6월 MIT의 매튜 그래이는 아마도 첫 번째 웹 로봇이라 할 수 있는 웹 완더러를 펄 프로그램으로 개발했다. 웹 완더러를 이용해 그는 완덱스라는 웹 문서 색인을 만들었다. 웹 완더러는 웹 세상의 크기를 측정하기 위해 개발된 것으로 이 작업은 1995년 말까지 계속되었다. 웹의 두 번째 검색엔진은 1993년 11월에 등장한 알리웹이었다. 알리웹은 웹 로봇을 쓰지않고 웹사이트 운영자가 등록하는 형태로 운영되었다.
1993년 12월에 나온 점프스테이션은 웹 로봇으로 문서를 찾은 뒤에 색인을 구성했고, 검색어 넣는 프로그램도 웹으로 만들었다. 점프스테이션은 이후 설명할 문서수집-색인-검색이라는 검색엔진의 세가지 필수기능을 조합해 만들어진 첫 번째 검색엔진이었다. 서버 성능 제약으로 색인은 문서의 제목과 하단의 목차 일부만 가능했다.
문서 전체를 검색해주는 최초의 엔진은 94년에 등장한 웹크롤러였다. 선배들과는 달리 어떤 페이지의 어떤 단어든 검색할 수 있게 개방된 형태였고 이는 이후 대부분의 주요 검색 엔진에서 사용된 방식이다. 웹크롤러는 대중에게 알려진 첫 번째 검색엔진이기도 하다.
역시 94년에 나온 카네기 멜론대의 라이코스는 상업적 성공을 거둔 첫 번째 검색엔진이다. 곧이어 수많은 검색엔진들이 등장해 경쟁하기 시작했다. 예를 들어 마젤란, 익사이트, 인포시크, 잉크토미, 노던 라이트 그리고 알타비스타 등이다. 야후는 사람들이 원하는 웹사이트를 찾는 가장 대중적인 도구였지만 야후의 검색기능은 자체 구축한 웹사이트 디렉토리에 한정되었고, 웹문서 전체를 대상으로 하지는 않았다. 야후에서는 정보를 찾기 위해 키워드를 넣는 것과 디렉토리를 오가는 것 양쪽이 가능했다.
로봇검색 엔진의 검색로직이 모두 다르다 보니 특정 검색어에 따라 특정 검색 엔진의 결과가 좋을 수 있었다. 이러한 이유로 메타 검색 엔진이 등장하였는데, 메타 검색 엔진은 자체적으로 정보를 보유하고 있지는 않으면서, 다른 검색 엔진 서비스 회사들의 검색결과를 실시간으로 가져와 정리해서 보여주는 방식이다. 대한민국에도 1995년에 코시크(korseek)가 최초의 한글검색엔진으로 소개되었다. 당시 인터넷에 영문 홈페이지만 등록할 수 있고 한글자료에 대한 검색이 어려웠던 터라서 코시크의 출범은 한국 웹의 확산에 크게 기여하게 된다. 이후 미스다찾니와 같은 메타 검색 엔진이 있었지만 지금은 사라졌으며, 대한민국 밖에서는 마이서치, 독파일 등이 서비스 되고 있다. 또한, 대한민국에서는 디렉토리 검색 엔진의 장점과 로봇 검색 엔진의 장점을 잘 혼합한 형태의 서비스가 등장하여 지금까지 주류를 이루고 있는데, 네이버, 다음 등이 그 대표적인 예이다.
구글은 1998년에 작은 검색엔진 회사인 goto.com을 보고 키워드를 팔면 되겠다는 아이디어를 얻었다. 이것은 검색엔진 사업에 큰 변화를 가져왔다. 인터넷 비즈니스의 가장 수익성 높은 수익모델이 된 것이다.
1996년 넷스케이프는 브라우저의 독점 기본 검색엔진으로 쓸 검색엔진을 찾고있었다. 다섯개의 검색엔진 회사가 관심을 보여 독점보다는 매년 번갈아가면서 년 500만 달러를 내고 공급하기로 했다. 야후, 마젤란, 라이코스, 인포시크, 익사이트가 그 다섯 회사였다.
90년대 말 인터넷 버블의 최고 수혜주는 검색엔진이었다. 몇몇 회사는 기업공개를 하면서 엄청난 돈을 공모했다. 노던 라이트같은 회사는 대중서비스를 중단하고 기업형 검색엔진을 만들어 공급하기도 했다. 묻지마투자는 99년과 01년 사이에 정점에 달했고, 많은 검색엔진 회사가 이 닷컴 버블때 휘말려 사라졌다. 2000년 즈음부터 구글이 시장을 과점하기 시작했다. 구글은 페이지랭크로 알려진 혁신적인 기술을 이용해 더 나은 검색결과를 보여주고 있었다. 페이지랭크는 다른 사이트의 페이지랭크와 그 안에 담긴 링크들의 관계를 재귀적으로 조합하는 알고리즘으로 더 많이 링크된 곳이 더 좋은 사이트라는 가정이 적용된 것이다. 다른 경쟁자들이 검색엔진을 웹 포탈 서비스에 결합해서 운영한 것에 반해 구글은 검색엔진 인터페이스를 최소화시켜서 유지했다.
2000년까지 야후는 잉크토미의 검색엔진을 제공해왔다. 야후는 2002년에 잉크토미를, 2003년에 오버추어(올더웹과 알타비스타를 소유한)를 인수했다. 야후는 2004년에 인수한 회사와 자사의 기술력을 조합해 검색엔진 서비스를 시작했디. MS는 잉크토미의 검색결과를 이용한 MSN 검색을 1998년 가을에 시작했다. 1999년 초에는 잉크토미 결과와 룩스마트 결과를 조합해 서비스했다. 잠시 알타비스타를 이용하기도 했다. 2004년에 MS는 자사 기술로 검색엔진을 만들기 시작했다. MS는 2009년 6월 1일, 빙이라는 브랜드로 검색엔진을 만들었고 6월 29일에 MS는 야후와 검색엔진 공급계약을 발표했다.
이전까지의 검색 엔진은 좋은 정보를 찾아내기 위한 방법으로 사용자가 입력한 검색어와 동일한 단어가 들어가 있는 페이지를 찾는 즉 키워드 검색 엔진에 기반을 두어 왔다. 하지만 점차 의미 기반의 검색 기법이 활용되고 있다. 하키아 와 큐로보는 시맨틱랭크 를 사용한다. 그리고 기존 검색 엔진의 요구와 달리 사용자 인터페이스면에서도 다른 시도가 늘고있다. 마이크로소프트사의 윈도 비스타에 내장된 사용자 시각 인터페이스를 적용한, 서치미 와 레드지 등이 있으며, 한국에는 비주얼큐로보 가 있다.
검색 엔진은 다음과 같은 순서로 동작한다.
검색 엔진은 HTML로 되어있는 웹페이지에서 추출한 텍스트를 축적하여 동작한다. 이 페이지들은 웹사이트의 모든 링크를 따라다니면서 문서를 모으는 문서수집기(웹 크롤러, 이전에는 웹 스파이더)가 추출한다. 로봇 규약에 따라 수집금지된 곳은 예외처리된다. 개별 페이지의 내용은 어떻게 색인을 위해 분석된다. 예를 들어 문서 제목, 페이지 내용, 목차, 기타 등등으로 영역을 나누어 추출하고 분석한다. 이후 검색어가 들어올 것을 대비해 이 웹페이지 데이터는 DB에 적절히 색인된다. 질의어는 한 단어인 경우가 많다. 색인은 정보를 최대한 빨리 찾을 수 있도록 돕는다. 알타비스타 같은 엔진이 모든 페이지의 모든 어휘들을 뽑아내는 방식으로 정보를 저장하는 경우도 있고, 구글과 같은 곳은 원 문서의 일부 혹은 전체를 캐시라는 임시저장의 형태로 저장해두기까지 한다. 캐시된 페이지는 원래 문서를 그대로 저장하고 있으므로 현재 페이지가 갱신되었거나 더 이상 없는 경우 자료를 찾기 유용하다. 이렇게 되면 사용자들은 없는 결과가 나올까봐 불안해하지 않고 검색어를 넣을 수 있게 된다. 어쨌든 결과는 있을 것이라 기대하게 되는 것이다. 검색결과의 신뢰도가 높아지면 이 캐시는 매우 유용해진다. 문서가 사라졌어도 캐시가 남아있으니 해당 검색결과가 올바른지 확인이 가능해지기 때문이다.
사용자가 검색엔진에 검색어를 넣으면 엔진은 색인을 조사, 평가해서 가장 잘 맞는 문서를 내놓는다. 보통 문서 제목 및 검색어가 담겨있는 본문을 추출하여 짧은 요약을 생성해 함께 보여준다. 색인은 문서 안에서 개별 어휘가 문서의 어디에 있는지를 확인해 축적하는 방식으로 만들어진다. 2007년이 되어서야 구글은 상세검색 기능에서 날짜를 기준 필터 기능을 만들었다. 전체 결과에서 자신이 원하는 날짜 범위를 지정할 수 있게 한 것이다. 많은 검색엔진은 검색어를 좀 더 한정짓기 위해 and, or, not과 같은 논리연산자를 지원한다. 논리연산자는 '이고', '혹은', '아닌'이라는 말 그대로의 한정기능을 제공한다. 그 엔진은 입력된 단어들이나 구를 있는 그대로 검색해준다. 몇몇 검색엔진은 인접검색 기능을 제공하기도 하는데 이는 검색어 사이의 거리까지 고려해 검색하는 것이다. 문서에 포함된 단어나 구에 대해 통계처리한 결과를 이용해 개념 기반으로 검색해주는 엔진도 있다. 평소에 사용하던 자연어를 그대로 입력하면 찾아주는 검색엔진도 있다. 지식iN 같은 곳에서 질문하는 것처럼 입력하면 된다. 검색엔진의 유용성은 검색엔진이 내놓는 결과가 얼마나 좋으냐에 따라 결정된다. 특정 단어나 구를 포함하는 수백만개의 웹페이지 중에서, 몇몇은 다른 것들에 비해 좀 더 상관관계가 높거나, 인기있거나, 권위있는 것들이다. 많은 검색엔진은 가장 좋은 문서를 상위에 올리기 위해 정렬방법을 고민한다. 어떻게 문서를 찾아낼 것인가와 어떤 순서로 문서를 정렬해 보여줄 것인가는 검색엔진에 따라 천차만별이다. 이 방법도 인터넷 사용 유형과 기술 발전에 따라 계속 변해왔다.
무엇이 좋은 검색엔진인가를 평가하는 것은 어렵다. '좋다'의 정의가 사람마다 다르기 때문이다. 보통 검색엔진의 성능을 평가할 때는 정확률(precision, 정확도)와 재현율(recall)을 얘기한다. 재현율은 검색된 적합한 문서수 / 총 적합한 문서수이고 정확률은 검색된 적합한 문서수 / 총 검색된 문서수이다. 하지만 적합한 문서의 기준과 총 문서수라는 것 둘 다 모호한 것이기 때문에 수치화하기 어렵다.
적절한 평가를 위해 테스트 문서집합을 하나 마련할 필요가 있다. 적합/부적합이 판정되어있고 문서 개수를 모두 알고 있는 문서집합이 그것이다. 검색엔진의 성능을 개선한 뒤 그 엔진으로 테스트 문서집합을 검색했을 때 이전에 비해 만족도가 얼마나 높아졌는지를 판단하는 것이다. 하지만 테스트 문서집합을 만드는 것이 어렵고 또 어떤 검색어를 넣을 것인가도 문제가 되기 때문에 검색엔진의 평가는 쉬운 일이 아니다.
대부분의 검색엔진은 광고 수익으로 유지된다. 광고주가 특정 검색어의 검색결과 상단에 올라갈 수 있도록 검색엔진 회사에 돈을 지불하는 방식이다. (이와는 다르게 (Organic)키워드 검색 노출을 위해서는 검색엔진최적화를 고려해야 함.) 검색엔진은 객관적인 검색결과의 옆에 광고를 노출하는 방식으로 돈을 번다. 광고클릭당 얼마의 식으로 돈을 받는다.
검색엔진의 상업성 추구는 컨텐츠를 전면에 내세우는 이른바 포털화로 진행된 사례가 많다. 다음은 이메일 서비스의 수요자를 기반으로 포털화에 성공하기 위해 야후의 검색결과를 이용한 바 있다. 네이버에 대해서는 최근에도 네이버 블로그나 카페의 검색 결과를 우대해 사용자의 유출을 막고 저작권 문제를 방치한다든지, 검색 결과를 정치적 의도에 따라 조작한다는 등의 의혹이 제기된 바 있다.
한편 구글은 타 검색 엔진 사이트의 포털화 당시에 서비스를 시작하면서, 웹 검색과 광고를 분리해 검색 서비스를 단순화했다. 구글은 현재 광고 외에도 많은 사업과 몇몇 수익원을 두고 있다.