elasticSearch(3)
-
ElasticSearch - DFR에 대해 알아보자
개요 scoring model 관련하여 BM25에 대해서 알아보았다. 이번에는 DFR에 대해서 알아보도록 하자. DFR의 경우 lucene 내부에서 implementation이 되어 있다. DFR ( Divergence from Randomness ) framework 똑똑하신 분들이 DFR에 대한 내용을 내놓았다. 사실 가정이나 내용이 잘 이해가지 않는다. 한 번 정리해보면서 그 내용을 이해해보도록 해보자. 정의 # 아래의 함수들은 우선 간단하게 표기했다. boost = 1 def normalize(tf, c, avgfl, fl): return 1 def baseModel(stat, tfn): return 1 def afterEffect(stats, tfn): return 1 w = boost * ba..
2021.08.29 -
ElasticSearch - BM25에 대해서 알아보자
개요 ES에는 search를 위해서 다양한 scoring function들을 지원한다. 이에 대해서 자세히 살펴 보도록 하자 TF-IDF 먼저 검색의 기초가되는 TF, IDF에 대해서 이해해야한다. 필자도 수알못이긴 하지만 이번 기회에 한 번 천천히 살펴서 적어보려고 한다. 시작하기 전에 몇가지 상황을 가정하면서 이해를 도우려고 한다. 내가 만약 아이폰12 케이스를 찾는다고, 가정하자. (실제로 찾고 있다.) 이 때, 우리는 검색을 "아이폰12 케이스"로 찾을 것이다. 이 때, 검색 쿼리는 "아이폰12", "케이스"로 찾게 될 것이다. (실제로 tokenize, filter하는 내용 및 자연어 처리 부분은 좀 더 복잡하지만 개략적으로 이해해보자.) 이제 검색엔진에서는 inverted index로 docu..
2021.08.08 -
ElasticSearch keyword string 차이
ElasticSearch data types ES에는 다양한 data type이 존재한다. ES data types keyword type이란? 결론적으로 말씀드리면 keyword type은 anlayzer를 거치지 않고, text를 그대로 저장한다. ( tokenizer, filter를 거치지 않음 ) 따라서 exact match를 활용할 때, 사용할 수 있다. Example 아래의 쿼리를 통해서 테스트해볼 수 있다. 1. Index 생성 index 생성 curl --location --request PUT 'localhost:9200/malgogi-test-v1?include_type_name=true' \ --header 'Accept: application/json' ..
2021.08.01