3

我们使用弹簧数据弹性搜索。我们使用多重匹配查询来搜索多个字段。

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

我们使用 PHRASE_PREFIX 进行词组匹配。

现在,我们想为昵称上的精确匹配添加提升(仅在精确匹配时提升)。

例如,当我搜索 Phone 时,如果 nickName 完全匹配,则它应该在结果中排​​在第一位。如果没有完全匹配,则应该给予 firstName 提升。我尝试像下面这样提升。

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

提升似乎不起作用。也不确定,如何仅在字段的完全匹配时添加提升。

谢谢

4

0 回答 0