검색이 되는 과정
검색 엔진은 사용자가 입력한 검색어를 기반으로 서비스 내에서 수많은 정보를 수집하고 색인화합니다. 이후에는 검색 알고리즘을 사용해, 일반적으로는 가장 관련성이 높은 결과물을 찾아내고 정렬합니다. 사용자는 이 결과 중에서 필요한 정보를 선택하고 해당 페이지로 이동해 내용을 확인합니다.
검색 서비스를 기획하려면, 일반적으로 검색 엔진이 어떤 단계를 거쳐 동작하는지 이해해야 합니다. 크게 네 단계로 나눠서 설명해 보겠습니다.
사용자가 검색창에 검색어를 입력합니다.
예를 들어, "만화 콘티에 대한 최신 동향"이라는 검색어를 입력했다고 가정해 봅시다.
사용자가 검색어를 입력하면, 해당 검색어가 검색 엔진 서버로 전송됩니다. 웹에서 검색한다고 가정해 보겠습니다. 이때 HTTP 요청 등을 통해서 검색 엔진과 통신이 이루어집니다.
검색 엔진 서버는 사용자의 검색어를 받아서 처리하기 위해 검색 알고리즘에 따라 검색을 시작합니다. 여기서 크롤링, 색인화, 인덱싱, 검색 알고리즘이라는 개념의 이해가 필요합니다.
(1) 크롤링
우선 크롤링이란, 검색 엔진이 웹 페이지들을 주기적으로 돌면서 데이터를 수집하는 작업을 의미합니다. 크롤러(또는 스파이더)라고 불리는 프로그램이 웹 링크들을 따라가면서 웹 페이지에 있는 텍스트, 링크, 이미지 같은 것들을 수집합니다.
(2) 색인
크롤링 단계에서 수집한 데이터는 검색 가능한 색인으로 변환되고, 검색 엔진의 데이터베이스에 저장됩니다. 이 과정에서 각 페이지의 특징적인 키워드, 내용, 링크, 구조 같은 것들이 추출되어 색인화됩니다. 이렇게 만들어진 색인은 검색을 할 때 빠르게 결과를 찾는 데 도움이 됩니다.
추출된 텍스트 데이터는 전처리 과정을 거칩니다. 특수문자를 제거하거나, 불필요한 태그 같은 것들을 제거하는 작업 같은 것입니다. 그렇게 전처리된 텍스트에서 의미 있는 용어를 추출하고, 각 용어에 대한 색인을 생성합니다.
예를 들어, "만화", "콘티", "동향"이라는 용어를 추출하고 각각에 대한 색인을 생성할 수 있습니다. 그러면 추출된 용어와 해당 용어가 등장한 문서의 위치를 매핑해서, 검색 가능한 색인을 구축합니다.
사전을 생각해 보시면 도움이 되실 겁니다. 전체 사전에서 "만화" 페이지를 찾으면, 해당 페이지에는 "만화"라는 단어가 등장한 문서들의 정보(제목, URL 등) 모음이 있는 것입니다.
(3) 검색 알고리즘
사용자가 검색창에 키워드(또는 질문)를 입력하면, 검색 엔진은 해당 키워드와 관련된 색인된 정보를 찾아냅니다. 이때 검색 알고리즘이 사용됩니다.
이 알고리즘은 여러 가지 기준에 따라 검색 결과를 정렬하고 필터링합니다. 주로 페이지 관련성, 검색 품질, 사용자 검색 기록을 활용합니다. 이외에도 개발 의도에 따라 다양한 정렬 방법을 생각해 볼 수 있습니다.
알고리즘에 의해 정렬된 검색 결과가 사용자에게 제공됩니다. 기본적으로는 사용자의 검색어에 가장 적합한 것부터 나열되고, 선택한 페이지로 이동할 수 있도록 기획합니다.
이 단계에서, 사용자가 어떤 결과를 선택했는지 정보를 수집해서 검색 알고리즘을 개선하는 데에 활용할 수도 있습니다. 이렇게 검색 엔진이 주기적으로 웹을 크롤링하고 데이터베이스를 업데이트해서, 주기적으로 최신 정보를 유지할 수 있도록 의도해야 합니다.
여기까지 검색 구조에 대한 기본적인 지식을 살펴봤습니다.
바로 다음 글에서는 위의 지식을 바탕으로 약간의 심화 이해가 필요한 '텍스트 전처리', '색인'에 대해 설명합니다. 잘못된 정보가 있으면 알려주세요.