春のデータ弾性検索を使用します。マルチマッチ クエリを使用して、複数のフィールドを検索します。
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");
ブーストが機能していないようです。また、フィールドの完全一致でのみブースティングを追加する方法もわかりません。
ありがとう