记一下调查查询结果排序的结果,以供今后参考。
首先是参考这篇博客使用 FunctionScoreQuery 实现自定义分值的方案。
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 调整查询权重,示例如下:
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))
);
版权声明:本文为博主「佳佳」的原创文章,遵循 CC 4.0 BY-NC-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:www.liujiajia.me/2021/7/21/s…