[Elasticsearch] MoreLikeThis API 설명
Elastic/Elasticsearch 2016. 7. 22. 16:21mlt 를 이용하면 쉽게 추천 기능을 구현 할 수 있습니다.
그래서 해당 API에 대한 문서를 제 맘데로 옮겨다 놓았습니다.
추후 elasticsearch + mlt 를 이용한 machine learning 이나 recommendation 구현 방법에 대해서 공유 하도록 하겠습니다.
참고문서)
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-mlt-query.html
API 설명)
More Like This Query
- MLT 쿼리는 주어진 문서셋과 같은 문서를 찾도록 해줍니다.
- 입력된 문서의 대표 키워드 셋을 가지고 질의 하여 결과를 리턴하게 됩니다.
- 리턴된 결과의 문서들은 대표 키워드 셋과 유사한 문서들로 구성 되게 됩니다.
- MLT 질의 시 문서 또는 키워드로 질의를 할 수 있습니다.
Parameters
Document Input Parameters
- like
작성된 문서 또는 text를 바탕으로 문서를 검색 합니다.
- unlike
작성된 문서 또는 text에서 제외 시킬 term을 작성 합니다.
- fields
문서에서 analyzed text 를 가져올 필드를 지정 합니다.
이 필드를 대상으로 질의 수행이 이루어 집니다.
- like_text
like 와 더불어 문서를 검색 할떄 추가적으로 사용할 text를 작성 합니다.
- ids or docs
@deprecated
Term Selection Parameters
- max_query_terms
작성된 문서 또는 text에서 추출하여 사용할 최대 query term size 입니다. (default 25)
- min_term_freq
작성된 문서 또는 text의 최소 TF 값으로 이 값보다 작을 경우 작성된 문서와 text는 무시 됩니다. (default 2)
- min_doc_freq
입력된 개별 term들에 대해서 각각 matching 된 문서의 최소 크기로 해당 크기 보다 작은 term의 결과는 무시 됩니다. (default 5)
- max_doc_freq
입력된 개별 term들에 대해서 각각 matching 된 문서의 최대 크기로 해당 크기 보다 큰 term의 결과는 무시 됩니다. (default unbounded 0)
- min_word_length
입력된 개별 term들의 최소 길이로 정의한 값보다 작은 term은 무시 됩니다. (default 0)
- max_word_length
입력된 개별 term들의 최대 길이로 정의한 값보다 큰 term은 무시 됩니다. (default unbounded 0)
- stop_words
불용어 목록을 등록 합니다.
- analyzer
입력한 문서와 text에 대한 analyzer 를 지정 합니다. 지정 하지 않을 경우 first field 의 analyzer 를 사용하게 됩니다.
Query Formation Parameters
- minimum_should_match
작성된 문서 또는 text에서 추출된 term matching 에 대한 minimum_should_match 정보를 구성 합니다. (default 30%)
- boost_terms
tems boost value 를 지정 합니다.
- include
검색 결과로 입력 문서를 포함 할지 말지를 결정 합니다. (default false)
- boost
전체 질의에 대한 boost value 를 지정 합니다. (default 1.0)
샘플 QueryDSL)
{
"query": {
"more_like_this": {
"fields": [
"title"
],
"like": "마스크 수분",
"min_term_freq": 1,
"min_doc_freq": 10,
"min_word_length": 2,
"include": true
}
},
"from": 0,
"size": 5,
"fields": [
"id",
"title"
]
}