diff --git a/src/main/java/org/codelibs/fess/helper/QueryHelper.java b/src/main/java/org/codelibs/fess/helper/QueryHelper.java index 30c8775b4..04e592dca 100644 --- a/src/main/java/org/codelibs/fess/helper/QueryHelper.java +++ b/src/main/java/org/codelibs/fess/helper/QueryHelper.java @@ -62,6 +62,7 @@ import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.query.RangeQueryBuilder; import org.elasticsearch.index.query.functionscore.FunctionScoreQueryBuilder.FilterFunctionBuilder; +import org.elasticsearch.index.query.functionscore.ScoreFunctionBuilder; import org.elasticsearch.index.query.functionscore.ScoreFunctionBuilders; import org.elasticsearch.search.sort.SortBuilder; import org.elasticsearch.search.sort.SortBuilders; @@ -125,6 +126,8 @@ public class QueryHelper { protected Map fieldBoostMap = new HashMap<>(); + protected List boostFunctionList = new ArrayList<>(); + @PostConstruct public void init() { if (responseFields == null) { @@ -334,6 +337,7 @@ public class QueryHelper { if (keyMatchHelper != null) { keyMatchHelper.buildQuery(queryContext.getDefaultKeyword(), list); } + list.addAll(boostFunctionList); }); } @@ -815,4 +819,11 @@ public class QueryHelper { this.lowercaseWildcard = lowercaseWildcard; } + public void addBoostFunction(final ScoreFunctionBuilder scoreFunction) { + boostFunctionList.add(new FilterFunctionBuilder(scoreFunction)); + } + + public void addBoostFunction(final QueryBuilder filter, final ScoreFunctionBuilder scoreFunction) { + boostFunctionList.add(new FilterFunctionBuilder(filter, scoreFunction)); + } }