diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java index 3891e4fb..6dedfa97 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java @@ -364,7 +364,17 @@ public class EsGoodsSearchServiceImpl implements EsGoodsSearchService { //关键字检索 if (CharSequenceUtil.isEmpty(searchDTO.getKeyword())) { - nativeSearchQueryBuilder.withQuery(QueryBuilders.matchAllQuery()); + List filterFunctionBuilders = new ArrayList<>(); + GaussDecayFunctionBuilder skuNoScore = ScoreFunctionBuilders.gaussDecayFunction("skuSource", 100, 10).setWeight(10); + FunctionScoreQueryBuilder.FilterFunctionBuilder skuNoBuilder = new FunctionScoreQueryBuilder.FilterFunctionBuilder(QueryBuilders.matchAllQuery(), skuNoScore); + filterFunctionBuilders.add(skuNoBuilder); + FunctionScoreQueryBuilder.FilterFunctionBuilder[] builders = new FunctionScoreQueryBuilder.FilterFunctionBuilder[filterFunctionBuilders.size()]; + filterFunctionBuilders.toArray(builders); + FunctionScoreQueryBuilder functionScoreQueryBuilder = QueryBuilders.functionScoreQuery(builders) + .scoreMode(FunctionScoreQuery.ScoreMode.SUM) + .setMinScore(2); + //聚合搜索则将结果放入过滤条件 + filterBuilder.must(functionScoreQueryBuilder); } else { this.keywordSearch(filterBuilder, searchDTO.getKeyword()); }