4

私はESが初めてで、Java APIを使用して検索しようとしています。Java API を使用して、ファイル固有のブースティングを提供する方法がわかりません。例を次に示します。私のインデックス ドキュメントは次のようになります。

_ソース": {

"th_id": 1,
"th_name": "test name",
"th_description": "test desc",
"th_image": "test-img",
"th_slug": "Make-Me-Smart",
"th_show_title": "Coast Tech Podcast",
"th_sh_category": "Alternative Health

}

キーワードを検索するときに、「th_name」で見つかった場合、他のフィールドで見つかった場合と比較して、結果を高くしたいと考えています。現在、以下のコードを使用して検索を行っています。

QueryBuilder qb1 = QueryBuilders.multiMatchQuery(keyword, "th_name", "th_description", "th_show_title", "th_sh_category");
SearchResponse response = client.prepareSearch("talk").setTypes("themes")
        .setSearchType(SearchType.DFS_QUERY_THEN_FETCH).setQuery(qb1)
        .setFrom(start).setSize(maxRows)
        .setExplain(true).execute().actionGet();

キーワードが「th_name」フィールドで見つかった場合、他のフィールドで見つかった場合と比較して、ドキュメントをブーストするためにクエリ時にできることはありますか?

4

3 に答える 3

17

受け入れられた答えは私にはうまくいきませんでした。私が使用しているESバージョンは6.2.4.

QueryBuilders.multiMatchQuery(keyword)
                            .field("th_name" ,2.0f)
                            .field("th_description")
                            .field("th_show_title")
                            .field("content")

それが他の誰かに役立つことを願っています。

于 2018-06-11T06:41:29.243 に答える