From 41c238f15dcf31cf6208f5cf8a06ffc704d48a9a Mon Sep 17 00:00:00 2001 From: liujiang <569804566@qq.com> Date: Sat, 11 Oct 2025 21:16:17 +0800 Subject: [PATCH] =?UTF-8?q?master=EF=BC=9A=E7=B3=BB=E7=BB=9F=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E5=AE=8C=E5=96=84=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/WebsiteAPPServiceImpl.java | 33 ++----------------- .../service/impl/WebsitePCServiceImpl.java | 33 ++----------------- 2 files changed, 4 insertions(+), 62 deletions(-) diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/WebsiteAPPServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/WebsiteAPPServiceImpl.java index d53ef4502..1f1384948 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/WebsiteAPPServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/WebsiteAPPServiceImpl.java @@ -1032,40 +1032,11 @@ public class WebsiteAPPServiceImpl implements IWebsiteAPPService { } // 添加 multiMatch 查询 if (StringUtils.isNotBlank(searchDTO.getSearch())) { - BoolQuery.Builder shouldBoolQuery = new BoolQuery.Builder(); - // 1. 多字段匹配(分词) MultiMatchQuery multiMatchQuery = MultiMatchQuery.of(m -> m .query(searchDTO.getSearch()) - .fields("prodArtNum^3", "storeName^2", "prodCateName^2", "parCateName^2") - .type(TextQueryType.BestFields) - .fuzziness("AUTO") + .fields("storeName", "prodCateName", "parCateName", "prodArtNum") ); - shouldBoolQuery.should(multiMatchQuery._toQuery()); - - // 2. 商品编号的精确匹配 - shouldBoolQuery.should(s -> s.wildcard(w -> w - .field("prodArtNum") - .value("*" + searchDTO.getSearch() + "*") - .caseInsensitive(true) - )); - - // 3. 短语匹配(带权重)- 完全匹配的得分更高 - shouldBoolQuery.should(s -> s.matchPhrase(m -> m - .field("storeName") - .query(searchDTO.getSearch()) - .boost(2.0f) // 店铺名称短语匹配权重加倍 - )); - shouldBoolQuery.should(s -> s.matchPhrase(m -> m - .field("prodCateName") - .query(searchDTO.getSearch()) - .boost(1.5f) // 分类名称短语匹配权重增加 - )); - shouldBoolQuery.should(s -> s.matchPhrase(m -> m - .field("parCateName") - .query(searchDTO.getSearch()) - .boost(1.5f) // 父级分类短语匹配权重增加 - )); - boolQuery.must(shouldBoolQuery.build()._toQuery()); + boolQuery.must(multiMatchQuery._toQuery()); } // 档口ID列表 过滤条件 if (CollectionUtils.isNotEmpty(searchDTO.getStoreIdList())) { diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/WebsitePCServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/WebsitePCServiceImpl.java index 2f34eeda9..2283a52be 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/WebsitePCServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/WebsitePCServiceImpl.java @@ -1927,40 +1927,11 @@ public class WebsitePCServiceImpl implements IWebsitePCService { } // 添加 multiMatch 查询 if (StringUtils.isNotBlank(searchDTO.getSearch())) { - BoolQuery.Builder shouldBoolQuery = new BoolQuery.Builder(); - // 1. 多字段匹配(分词) MultiMatchQuery multiMatchQuery = MultiMatchQuery.of(m -> m .query(searchDTO.getSearch()) - .fields("prodArtNum^3", "storeName^2", "prodCateName^2", "parCateName^2") - .type(TextQueryType.BestFields) - .fuzziness("AUTO") + .fields("storeName", "prodCateName", "parCateName", "prodArtNum") ); - shouldBoolQuery.should(multiMatchQuery._toQuery()); - - // 2. 商品编号的精确匹配 - shouldBoolQuery.should(s -> s.wildcard(w -> w - .field("prodArtNum") - .value("*" + searchDTO.getSearch() + "*") - .caseInsensitive(true) - )); - - // 3. 短语匹配(带权重)- 完全匹配的得分更高 - shouldBoolQuery.should(s -> s.matchPhrase(m -> m - .field("storeName") - .query(searchDTO.getSearch()) - .boost(2.0f) // 店铺名称短语匹配权重加倍 - )); - shouldBoolQuery.should(s -> s.matchPhrase(m -> m - .field("prodCateName") - .query(searchDTO.getSearch()) - .boost(1.5f) // 分类名称短语匹配权重增加 - )); - shouldBoolQuery.should(s -> s.matchPhrase(m -> m - .field("parCateName") - .query(searchDTO.getSearch()) - .boost(1.5f) // 父级分类短语匹配权重增加 - )); - boolQuery.must(shouldBoolQuery.build()._toQuery()); + boolQuery.must(multiMatchQuery._toQuery()); } // 档口ID 过滤条件 if (CollectionUtils.isNotEmpty(searchDTO.getStoreIdList())) {