From f1c0207a3d7b885e9d42f29b90058f2f3744275a Mon Sep 17 00:00:00 2001 From: paulGao Date: Wed, 17 Nov 2021 17:06:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96es=E9=BB=98=E8=AE=A4=E6=90=9C?= =?UTF-8?q?=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../search/serviceimpl/EsGoodsSearchServiceImpl.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) 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()); }