1. 程式人生 > >elasticsearch使用More like this實現基於內容的推薦

elasticsearch使用More like this實現基於內容的推薦

無限 itl percent 結果 忽略 class terms query col

基於內容的推薦通常是給定一篇文檔信息,然後給用戶推薦與該文檔相識的文檔。Lucene的api中有實現查詢文章相似度的接口,叫MoreLikeThis。Elasticsearch封裝了該接口,通過Elasticsearch的More like this查詢接口,我們可以非常方便的實現基於內容的推薦。

{   
    "more_like_this" : {   
        "fields" : ["title", "content"],   
        "like_text" : "text like this one",   
    }   
}  

其中:

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:設置使用的分詞器,默認是使用該字段指定的分詞器

elasticsearch使用More like this實現基於內容的推薦