스코어 (score) 점수
: 검색된 결과가 검색 조건과 얼마나 일치하는지를 점수로 계산하여 response로 보내준다.
- 쿼리와 관련이 높은 검색결과(도큐먼트)일수록 더 높은 점수를 받는다.
- 높은 점수일수록 우리가 원하는 검색결과일 가능성이 크다.
계산방법
- BM(Best Matching)25라는 알고리즘을 사용해서 점수를 계산한다.
해당 알고리즘에는 총 3가지의 구성 요소가 있다.
1. TF (Term Frequency)
: 검색하려는 특정 용어가 하나의 도큐먼트에 얼마나 많이 등장했는가?
중요한 건 하나의 도큐먼트(문서)에서 검색하려는 용어가 얼마나 많이 등장했냐는 것이다.
예를 들어, "쥬라기 공원"이라는 용어를 검색했을 때, "쥬라기 공원"이라는 단어가 5번 들어 있는 웹 페이지 보다는 10번 들어있는 웹 페이지가 내가 보고싶어 하는 정보가 있는 페이지일 확률이 높을 것이다.
"Term Frequency가 높다 = 특정 도큐먼트에서 검색한 단어가 많이 등장한다. = 높은 점수를 받는다
=> 우리가 원하는 검색결과일 가능성이 높다."
2. IDF (Inverse Document Frequency)
: 검색하려는 단어가 전체 문서에서 얼마나 많은 문서에서 등장했는가?
갑자기 Document Frequency, 즉 문서가 얼마나 많이 등장했냐의 여부가 나와서 이해가 안 될 수도 있다.
우리가 검색을 하려할 때, 앞에서 언급한 분석기로 나눠져서 텀(단어) 형태로 검색이 된다.
이렇게 나눠진 단어들 중, 어떠한 단어는 웹 페이지 전체에서 많은 수의 문서에서 등장할 수 있다. 이 얘기는 결국, 전체 웹 페이지 이곳저곳에서 등장한다 즉, 단어 자체가 흔하다라는 것을 의미한다.
IDF 같은 경우는, 이렇게 많은 수의 문서가 등장할수록, 즉 흔한 단어일수록 점수를 낮게 준다. 그렇기 때문에 Document Frequency에 Inverse가 붙는 것이다.
애초에 단어 자체가 흔하니, 이러한 흔한 단어는 상대적으로 덜 흔한 단어보다 애초에 어떤 특정 문서에서 많이 등장할 가능성이 높으니, 단순히 Term Frequency가 높다하더라도, 생각보다 우리가 원하는 내용일가능성은 낮을 수 있다는 것이다.
예를 들어, 쥬라기 공원을 검색을 했을 때, "쥬라기"와 "공원"이라는 단어로 분리가 될 것이고, 각각 모든 문서에서 검색이 진행될텐데, "쥬라기"라는 단어보다는 "공원"이라는 단어가 흔하고, 전체 문서에서 많은 수의 문서에서 자주 등장할 것이기에, (Document Freuquency가 높기에)
앞에서 언급한 Term Freuquency가 같은 문서라도, 상대적으로 덜 흔한 단어인 "쥬라기"가 많이 등장한 검색 문서일수록 그 중요도 점수가 높아질 수 밖에 없다는 것이다.
정리하면, 한 단어 기준,
"Document Frequency 높다 = 단어자체가 흔하다 = 낮은 점수를 받는다
=> 우리가 원하는 검색결과일 가능성이 낮다."
3. Field Length
: 어떤 단어가 검색된 document의 길이가 어떤가?
Field Length, 말 그대로 필드의 길이이다. 여기서의 필드는 검색된 하나의 도큐먼트를 의미하며, 앞에서 언급한 TF-IDF값이 같더라고하더라고, 상대적으로 짧은 길이의 문서(도큐먼트)에서 등장할록 더 높은 점수를 받는다는 것이다.
예를 들어, 어떠한 글이 제목과 내용으로 구성이 되어있다고 할 때, 똑같이 특정 단어의 검색 횟수가 같다고 하더라도, 제목에서 검색이 되느냐와 글의 내용에서 검색이 되느냐는 차이를 가진다는 것이다.
제목은 길어봤자 한 두줄일 가능성이 크고, 글의 내용은 1페이지에서부터 길면 한 책의 양일 가능성도 있다. 필드 길이 자체가 긴 문서에서 등장을 한다고하면, 긴 도큐먼트에서 해당 단어가 검색되었다고 하더라도, 우리가 원하는 검색결과가 아닌 글일 가능성이 높다라고 생각을 하는 것이다.
"쥬라기 공원"이 제목에서 등장했다면 그 제목의 내용 자체가 "쥬라기 공원"일 가능성이 높다. 이게 단순히 "제목"이어서 그런 것이 아니라, 필드길이가 짧기 때문인 것이다. 반대로, 글 내용에서 "쥬라기 공원"이 나왔다면, 이 글의 내용의 필드 길이가 애초에 길기 때문에, "쥬라기 공원"이라는 단어가 단순히 예시 하나로 등장하고 말 가능성이 높다고 보는 것이다.
"Field Length가 길다 = 검색된 도큐먼트의 길이가 길다 = 낮은 점수를 받는다
=> 우리가 원하는 검색결과일 가능성이 낮다."
출처 : 엘라스틱 가이드 (김종민님)
'Elastic Search' 카테고리의 다른 글
엘라스틱 서치에서의 역인덱싱 (0) | 2023.02.14 |
---|