3

春のデータ弾性検索を使用します。マルチマッチ クエリを使用して、複数のフィールドを検索します。

QueryBuilder queryBuilder = multiMatchQuery(searchInput, "id","firstName","lastName","title","nickName","location")
        .type(MatchQueryBuilder.Type.PHRASE_PREFIX).analyzer("standard");

フレーズ一致には PHRASE_PREFIX を使用します。

ここで、nickName の完全一致のブーストを追加したいと思います (完全一致の場合のみブースト)。

たとえば、Phone を検索するときに、nickName に完全に一致するものがある場合は、結果の最初に並べる必要があります。完全に一致するものがない場合は、firstName をブーストする必要があります。以下のようにブーストしてみました。

QueryBuilder queryBuilder = multiMatchQuery(searchInput, "id","firstName","lastName","title","nickName^9","location")
        .type(MatchQueryBuilder.Type.PHRASE_PREFIX).analyzer("standard");

ブーストが機能していないようです。また、フィールドの完全一致でのみブースティングを追加する方法もわかりません。

ありがとう

4

0 に答える 0