1장 부터 이어지는 내용입니다.
해당 문장은 책 인용 입니다.
검색 엔진은 우리 삶에 엄청난 영향을 미쳤다. ~~ 큰 건초 더미에서 바늘을 찾는 작업이다. 하지만 툴의 작동 원리는 궁금해 하지 않는다.
책을 읽으면서 많은 생각이 들었다.
현재 iOS를 공부하고 개발자가 되기위해 많은 코드들을 적어보았지만, 위 같은 경우는 궁금해 하지도,
혹은 백엔드팀이 해줘야지 같이 남일 처럼 여겨왔었다.
하지만 결국 실무에 들어가게 되면, 어느정도 아는 지식이 있어야 소통이 될텐데, 너무 쉽게만 생각했는가?
같은 질문이 머리 속에 맴돌았다.
해당 책에서는 검색 엔진의 두 가지 주요 과제로
매칭(matching), 랭킹(Ranking)
을 설명하고 있다.
웹 검색 쿼리를 발행할때 두가지 주요 과제 "매칭, 랭킹"
이 두 가지는 사실 하나의 과정으로 조합하여 실 서비스에서 사용된다고 한다.
이 책에서는 두 가지가 개념적으로 분리되어 있어, 각 단계로 설명하고 있다.
구글을 생각해 보자.
만약 구글 검색창에 "Youtube" 라고 검색하게 된다면 당연히 유튜브 사이트가 최상단에 올라오게 된다.
여기서 주목할 점은 바로Ranking
이라는 것이다.
예전에는 구글, 야후, MSN( 현 Bing ) 이 각각 골고루 점유율을 나눠 가지고 있었는데
현재는 구글이 우세하다.
왜일까? 이책에서는 Ranking 알고리즘을 원인으로 생각하고 있다.
(요약) - 구글이 먼저가 아니라 알타비스타가 최초이다.
도서관의 책들을 각 번호별로 분리되어 있는 모습이 떠오를 것이다.
인덱스를 번역하면 -> 색인 이라고 한다.
책 끝에 잇는 찾아보기 페이지를 생각해 보자.
웹 검색엔진 인덱스도 위 설명과 같이 작동하고 있다.
1. "안녕하세요" 2. "반갑습니다" 3."먼저 하세요" 4."알겠습니다"
라는 문장이 있다면
안녕: 1 | 하세요: 1,3 | 습니다: 2,4 ... 같이 인덱스를 구축한다는 말이다.
여기서 "하세요" 나 "습니다" 같은 문장에선 중복적인 문장을 두개다 사용하는 페이지가 있다고
생각해보면, 먼저, 3개의 검색 결과를 훑어본 후 모두 등장하는 페이지를 검색결과를 보여준다.
하지만 오늘날엔 적합하지 않는 방법이다.
구문 쿼리 (pharse query) 처리 문제 때문이다.
예를 들어, "안녕하세요 반갑습니다"라는 구문 쿼리를 검색할 때, 기존 인덱스 방식은
각각의 단어에 대한 위치만 기록하므로 "안녕하세요"와 "반갑습니다"가 동일한 위치에 등장하는지를
확인하기가 어렵다. 즉 구문 쿼리를 정확히 처리하려면 추가적인 절차가 필요하다.
다시 쉽게 설명해보자면,
안녕하세요 반갑습니다.
,반갑습니다. 안녕하세요
같은 문장을 찾을 수도 있고, 정확히 `안녕하세요 반갑습니다." 를 찾을 수 도 있는데
검색엔진 입장에선, 두 단어 혹은 문장이 적절한 순서로 되어 있는지 알기 어렵기 때문이다.
순서 정보 부족
: 기본 인덱스 구조에서는 단어의 순서에 대한 정보가 없기 때문에,
쿼리에서 요구하는 단어들이 같은 문장 내에 순서대로 등장하는지를 확인할 수 없다.
위치 관계 정보 부족
: 인덱스는 특정 단어가 페이지에 등장하는 위치만 제공하지만,
단어들 사이의 거리나 위치 관계는 제공하지 않다. 따라서 여러 단어가 연속으로 나오거나 특정 위치에 나오는 경우를 정확하게 처리하기 어렵다.
위 같은 문제를 해결하기위해
각 페이지에선 각 단어의 위치를 기억하고자 한다.
- "안녕(1)하세요(2)" 2. "반갑(1)습니다(2)" 3."먼저(1) 하세요(2)" 4."알겠(1)습니다(2)"
만약 "안녕하세요"라는 구문 쿼리를 검색하려면
각 문장에서 "안녕"과 "하세요"라는 단어가 있는 위치를 확인한다.예를 들어, 1번 문장에서 "안녕"이 위치 1에, "하세요"가 위치 2에 있다면,
"안녕"과 "하세요"가 연속된 위치에 있는지 확인한다. 구문 쿼리를 만족하려면,
"안녕" 다음에 위치 1보다 1 큰 위치에 "하세요"가 나와야 한다.
EX) 1-1, 1-2
이번 2장은 제가 알지 못 했던 개념들이 등장해서 재밌게 읽었습니다.
실제 책에선 영어로 쿼리를 설명하고 있는데, 블로그에다가 적을때는 그래도 한글로 해야 금방
읽히지 않을까 해서 한글로 예를 들었습니다.
2장이 사실 완전히 끝난게 아닙니다.
2장과 3장 사이에랭킹과 연관성
이라고 해서 나오는데
이번 글에는 매칭 자체에 좀더 초점을 두자 생각해 이렇게 마무리 지으려고 합니다.
감사합니다.