ElasticSearch java API-More like thisを使用してコンテンツベースの推奨を実現

2746 ワード

ElasticSearch java API-More like thisを使用してコンテンツベースの推奨を実現
コンテンツベースの推奨は、通常、ドキュメント情報を指定し、ユーザーにドキュメントと知り合いのドキュメントを推奨します.Luceneのapiには,クエリ記事の類似度を実現するインタフェースがあり,MoreLikeThisと呼ぶ.Elasticsearchはこのインタフェースをカプセル化し、ElasticsearchのMore like thisクエリーインタフェースを通じて、コンテンツベースの推奨を非常に容易に実現することができます.クエリーリクエストのjsonの例を見てみましょう.
{ "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:1つのドキュメント内の1つの単語の少なくとも出現回数、この値未満の単語は無視され、デフォルトは2です.
max_query_terms:1つのクエリー文で最大クエリー可能な語の数、デフォルトは25です.
stop_words:停止語を設定し、一致すると停止語は無視されます
min_doc_freq:1つの語が少なくとも何編のドキュメントに現れるか、この値未満の語は無視され、デフォルトは無制限です.
max_doc_freq:1つの語が最大何編のドキュメントに現れるか、この値より大きい語は無視され、デフォルトは無制限です.
min_word_len:最小の語長、デフォルトは0
max_word_len:最大の語長、デフォルトは無制限
boost_terms:語の重みを設定します.デフォルトは1です.
boost:クエリーの重みを設定します.デフォルトは1です.
analyzer:使用する分詞器を設定します.デフォルトでは、このフィールドで指定した分詞器面を使用してjava apiで呼び出す方法を紹介します.全部で3つの呼び出し方法がありますが、本質的には同じです.ある程度のパッケージにすぎません.
MoreLikeThisRequestBuilder mlt = new MoreLikeThisRequestBuilder(client, "indexName", "indexType", "id");  mlt.setField("title");//      SearchResponse response = client.moreLikeThis(mlt.request()).actionGet(); 

これは、あるidのドキュメントに似ているドキュメントをクエリーします.このインタフェースはclientで直接呼び出され、比較的特殊です.あと2つはQueryを構築してクエリーを行うことです
MoreLikeThisQueryBuilder query = QueryBuilders.moreLikeThisQuery();  query.boost(1.0f).likeText("  ").minTermFreq(10);  

ここでのboost,likeTextメソッドは完全に上のパラメータに対応している.次に、一致するフィールドをパラメータとして入力します.パラメータはMoreLikeThisQueryBuilderと同じです.
MoreLikeThisFieldQueryBuilder query = QueryBuilders.moreLikeThisFieldQuery("  ");