elasticsearch使用more_like_this实现基于内容的推荐
官網地址:https://www.elastic.co/guide/en/elasticsearch/reference/2.3/query-dsl-mlt-query.html
基于內容的推薦通常是給定一篇文檔信息,然后給用戶推薦與該文檔相識的文檔。Lucene的api中有實現查詢文章相似度的接口,叫MoreLikeThis。Elasticsearch封裝了該接口,通過Elasticsearch的More like this查詢接口,我們可以非常方便的實現基于內容的推薦。
先看一個查詢請求的json例子:
GET /mychat/mytype/_search
{
?? "query":{? ?
??????? "more_like_this":{? ?
??????????? "fields" : ["ask", "answer"],? ?
??????????? "like_text" : "中國" ,
??????????? "min_term_freq" : 1,
??????????? "max_query_terms" : 12
??????? }? ?
??? } ?
}
fields是要匹配的字段,如果不填的話默認是_all字段
like_text是匹配的文本。
除此之外還可以添加下面條件來調節結果
percent_terms_to_match:匹配項(term)的百分比,默認是0.3
min_term_freq:一篇文檔中一個詞語至少出現次數,小于這個值的詞將被忽略,默認是2
max_query_terms:一條查詢語句中允許最多查詢詞語的個數,默認是25
stop_words:設置停止詞,匹配時會忽略停止詞
min_doc_freq:一個詞語最少在多少篇文檔中出現,小于這個值的詞會將被忽略,默認是無限制
max_doc_freq:一個詞語最多在多少篇文檔中出現,大于這個值的詞會將被忽略,默認是無限制
min_word_len:最小的詞語長度,默認是0
max_word_len:最多的詞語長度,默認無限制
boost_terms:設置詞語權重,默認是1
boost:設置查詢權重,默認是1
analyzer:設置使用的分詞器,默認是使用該字段指定的分詞器
下面介紹下如何用Java?api調用,一共有三種調用方式,不過本質上都是一樣的,只不過是做了一些不同程度的封裝。
[java]?view plaincopy
[java]?view plaincopy
[java]?view plaincopy
總結
以上是生活随笔為你收集整理的elasticsearch使用more_like_this实现基于内容的推荐的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: elasticsearch 查询数据 |
- 下一篇: Elasticsearch中的Multi