我们使用弹簧数据弹性搜索。我们使用多重匹配查询来搜索多个字段。
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");
提升似乎不起作用。也不确定,如何仅在字段的完全匹配时添加提升。
谢谢