Elasticsearch 을 공부하다가 마주친 Search Score
가장 적합한 도큐먼트를 찾아야하는 elasticsearch은 어떻게 score를 결정하는 것일까 ?
매 쿼리마다 엘라스틱서치는 관련도 score를 계산한다. 계산할 때 사용하는 알고리즘은 tf-idf 알고리즘이다.
tf-idf algorithm : Term Frequency - Inverse Document Frequency
tf-idf 알고리즘은 기본적으로 두 가지를 계산한다.
1. tf (term-frequency) : 단어/용어 빈도수 in a document
2. idf (inverse document frequency) : 단어/용어 등장 횟수 in ** ALL ** documents
예를 들어, 아래의 두 문장이 있다고 하자
1. To be or not to be, that is the question.
2. To be. I am. You are. He, She is.
이제 "question" 을 찾는다고 하면 tf-idf 알고리즘은 아래와 같이 계산한다.
* tf
첫 번째 문장은 총 10개의 단어로 이루어져있고 question과 일치하는 단어는 1개이다. => 1/10
두 번째 문장은 총 9개의 단어로 이루어져있고 question과 일치하는 단어는 0개이다. => 0/9
* idf
idf의 계산 방식은 전체 documents 기준이다.
log (전체 documents 수 / "question" 포함한 doucments 수)
log(2/1) = 0.301
* tf-idf 최종 결과
첫 번째 document : 1/10 * 0.301 = 0.03
두 번째 document : 0/9 * 0.301 = 0
==> 첫 번째 document가 스코어가 더 높아 최적의 데이터로 선택된다.
Reference : https://blog.softwaremill.com/6-not-so-obvious-things-about-elasticsearch-422491494aa4
'Elasticsearch' 카테고리의 다른 글
[MongoDB] mongoDB 데이터 Monstache을 사용하여 elasticsearch로 이동시키기 (0) | 2022.05.24 |
---|---|
[Elsticsearch] health check & version 버전 확인하기 (0) | 2022.05.24 |
[Elasticsearch] node.js search 검색 사용법 / parameters / options (0) | 2022.04.21 |
[Elasticsearch] Nori 설치 및 실습해보기 (0) | 2022.04.19 |
[Elasticsearch] scoring _score field 점수매기는 프로세스 (0) | 2022.04.19 |