From 8e30defa0e8531450e3ff04df7da573d49f6e4ea Mon Sep 17 00:00:00 2001 From: paulGao Date: Wed, 6 Apr 2022 10:39:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96es=E5=95=86=E5=93=81=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=EF=BC=8C=E5=85=A8=E5=88=86=E8=AF=8D=E5=8C=B9=E9=85=8D?= =?UTF-8?q?=E6=94=B9=E4=B8=BA2=E5=88=86=E8=AF=8D=E5=8C=B9=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/search/serviceimpl/EsGoodsSearchServiceImpl.java | 3 ++- 1 file changed, 2 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 85d669e0c..63d53d137 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 @@ -562,7 +562,8 @@ public class EsGoodsSearchServiceImpl implements EsGoodsSearchService { */ private List buildKeywordSearch(String keyword) { List filterFunctionBuilders = new ArrayList<>(); - MatchQueryBuilder goodsNameQuery = QueryBuilders.matchQuery("goodsName", keyword).operator(Operator.AND); + // operator 为 AND 时 需全部分词匹配。为 OR 时 需配置 minimumShouldMatch(最小分词匹配数)不设置默认为1 + MatchQueryBuilder goodsNameQuery = QueryBuilders.matchQuery("goodsName", keyword).operator(Operator.OR).minimumShouldMatch("2"); //分词匹配 filterFunctionBuilders.add(new FunctionScoreQueryBuilder.FilterFunctionBuilder(goodsNameQuery, ScoreFunctionBuilders.weightFactorFunction(10)));