루씬 6.0이전의 기본 유사도 모델은 TF-IDF 모델이었지만 루씬 6.0이후의 기본 유사도 모델은 BM25로 변경되었다.
일래스틱서치 5.0부터 루씬 6.0을 사용하면서 기본 유사도 모델이 BM25로 변경되었다.
BM25 외에 사용할 수 있는 다른 유사도 모델은 다음과 같다.
* TF-IDF(기존 방식) : TF-IDF 모델을 기반으로 하고 일래스틱서치 5.0 이전 버전의 기본 유사도 모델로 사용되었다. 일래스틱서치에 해당 유사도 모델을 사용하려면 classic 이름을 사용해야 한다.
* DFR(divergence from randomness) : 동일 이름의 확률적 모델을 기반으로 한다. 일래스틱서치에서 해당 유사도 모델을 사용하려면 DFR 이름을 사용해야 한다. 랜덤 유사성 모델로부터 나온 디버전스는 자연어 텍스트와 비슷한 데이터에서도 잘 동작한다고 알려져 있다.
* DFI(Divergence from independence) : 동일한 이름의 확률적 모델을 기반으로 한다. 일래스틱서치에서 해당 유사도를 사용하려면 DFI 이름을 사용해야 한다.
참조
http://trec.nist.gov/pubs/trec21/papers/irra.web.nb.pdf
* IB(Information-based) : DFR에서 사용되는 모델과 매우 유사한다. 해당 유사도를 일래스틱서치에서 사용하려면 IB 이름을 사용해야 한다. DFR 유사도과 마찬가지로 정보 기반 모델은 자연어 텍스트와 비슷한 데이터에서 잘 수행된다고 알려져 있다.
* LM Dirichlet : Bayesian 스무딩과 Dirichlet 사전을 사용한다. 해당 유사도 모델을 사용하려면 LM Dirichlet 이름을 사용해야 한다.
참조
* LM Jelinek Mercer : Jelinek Mercer 스무딩 방법을 기반으로 한다. 해당 유사도를 사용하려면 LMJelinekMercer 이름을 사용해야 한다.
일래스틱서치에서는 유사도 모델과 관련 매개배수를 사용해 매핑할 때 유사도 모델을 설정할 수 있다.
https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-similarity.html
예)
* IB 모델
"similarity" : {
"esserverbook_ib_similarity" : {
"type" : "IB",
"distribution" : "ll",
"lambda" : "df",
"normalization" : "z",
"normalization.z.z" : "0.25"
}
}
* LM Dirichlet 모델
"similarity" : {
"esserverbook_lm_dirichlet_similarity" : {
"type" : "LMDirichlet",
"mu" : "1000"
}
}
* LM Jelinek Mercer 모델
"similarity" : {
"esserverbook_lm_jelinek_mercer_similarity" : {
"type" : "LMJelinekMercer",
"lambda" : "0.7"
}
}
'Elasticsearch' 카테고리의 다른 글
[elasticsearch1.x] 메모리 구조 - 펌글 (0) | 2017.08.02 |
---|---|
[elasticsearch5] 핫 스레드 (hot thread) api (0) | 2017.07.31 |
[elasticsearch5] phrase 쿼리에 사용할 수 있는 3가지 스무딩(smoothing) 모델 (0) | 2017.07.29 |
[elasticsearch5] 집계 (aggregation) 성능 향상 (0) | 2017.07.26 |
[elasticsearch5] elasticsearch scripting 역사 (0) | 2017.07.25 |