본문 바로가기

Elasticsearch

[Elasticsearch] 엘라스틱서치 관련도 score가 결정되는 방법

반응형

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 =

 

==> 첫 번째 document가 스코어가 더 높아 최적의 데이터로 선택된다. 

 

 

 

 

 

Reference : https://blog.softwaremill.com/6-not-so-obvious-things-about-elasticsearch-422491494aa4

반응형