<!-- # Spring Boot & Elasticsearch 自定义查询结果排序 --> <!-- spring-boot-and-elasticsearch-customize-search-sort --> 记一下调查查询结果排序的结果,以供今后参考。 首先是参考[这篇博客][1]使用 `FunctionScoreQuery` 实现自定义分值的方案。 ```java queryBuilder.must( QueryBuilders.boolQuery() .should(QueryBuilders .functionScoreQuery( QueryBuilders.matchQuery(NovelField.TITLE, parameter.getKeyword()), ScoreFunctionBuilders.weightFactorFunction(1000) )) .should(QueryBuilders .functionScoreQuery( QueryBuilders.matchQuery(NovelField.AUTHOR, parameter.getKeyword()), ScoreFunctionBuilders.weightFactorFunction(500) )) .should(QueryBuilders .functionScoreQuery( QueryBuilders.matchQuery(NovelField.BRIEF, parameter.getKeyword()), ScoreFunctionBuilders.weightFactorFunction(10) )) .should(QueryBuilders .functionScoreQuery( QueryBuilders.matchQuery(NovelField.MAJOR_CHARACTERS, parameter.getKeyword()), ScoreFunctionBuilders.weightFactorFunction(100) )) ); ``` 第二种是查看之前的笔记,可以通过修改 *boost* 调整查询权重,示例如下: ```java queryBuilder.must( QueryBuilders.boolQuery() .should(QueryBuilders.matchQuery(NovelField.TITLE, parameter.getKeyword()).boost(1000)) .should(QueryBuilders.matchQuery(NovelField.AUTHOR, parameter.getKeyword()).boost(500)) .should(QueryBuilders.matchQuery(NovelField.BRIEF, parameter.getKeyword()).boost(10)) .should(QueryBuilders.matchQuery(NovelField.MAJOR_CHARACTERS, parameter.getKeyword()).boost(100)) ); ``` [1]:https://www.cnblogs.com/softidea/p/6928049.html (Spring Boot 整合 Elasticsearch,实现 function score query 权重分查询) Loading... 版权声明:本文为博主「佳佳」的原创文章,遵循 CC 4.0 BY-NC-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://www.liujiajia.me/2021/7/21/spring-boot-and-elasticsearch-customize-search-sort 提交