From 6378b1e03b15e66ce58ebdb0f748f1330e2324d9 Mon Sep 17 00:00:00 2001 From: peng <peng.com> Date: 星期二, 05 八月 2025 09:14:15 +0800 Subject: [PATCH] 修改首页视频显示问题 --- framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java | 41 ++++++++++++++++++++++++++++++++++++----- 1 files changed, 36 insertions(+), 5 deletions(-) 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 11aa047..53454ff 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 @@ -48,6 +48,10 @@ import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.stereotype.Service; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -93,10 +97,12 @@ cache.incrementScore(CachePrefix.HOT_WORD.getPrefix(), searchDTO.getKeyword()); } NativeSearchQueryBuilder searchQueryBuilder = createSearchQueryBuilder(searchDTO, pageVo); -// searchQueryBuilder.withCollapseField("goodsId.keyword"); + if (Objects.nonNull(searchDTO.getCanFilter()) && searchDTO.getCanFilter()) { + searchQueryBuilder.withCollapseField("goodsId.keyword"); + } NativeSearchQuery searchQuery = searchQueryBuilder.build(); searchQuery.setTrackTotalHits(true); - log.debug("searchGoods DSL:{}", searchQuery.getQuery()); + log.info("searchGoods DSL:{}", searchQuery.getQuery().toString()); SearchHits<EsGoodsIndex> search = restTemplate.search(searchQuery, EsGoodsIndex.class); return SearchHitSupport.searchPageFor(search, searchQuery.getPageable()); } @@ -448,8 +454,16 @@ FunctionScoreQueryBuilder.FilterFunctionBuilder[] builders = new FunctionScoreQueryBuilder.FilterFunctionBuilder[filterFunctionBuilders.size()]; filterFunctionBuilders.toArray(builders); FunctionScoreQueryBuilder functionScoreQueryBuilder = QueryBuilders.functionScoreQuery(QueryBuilders.matchAllQuery(), builders) - .scoreMode(FunctionScoreQuery.ScoreMode.SUM) - .setMinScore(2); + .scoreMode(FunctionScoreQuery.ScoreMode.SUM); + functionScoreQueryBuilder.setMinScore(0); +// if (CharSequenceUtil.isNotEmpty(searchDTO.getPromotionsId()) && CharSequenceUtil.isNotEmpty(searchDTO.getPromotionType())) { +// functionScoreQueryBuilder.setMinScore(0); +// }else if (cn.lili.common.utils.StringUtils.isNotBlank(searchDTO.getCategoryId())){ +// functionScoreQueryBuilder.setMinScore(0); +// } +// else { +// functionScoreQueryBuilder.setMinScore(2); +// } //鑱氬悎鎼滅储鍒欏皢缁撴灉鏀惧叆杩囨护鏉′欢 filterBuilder.must(functionScoreQueryBuilder); } else { @@ -555,6 +569,23 @@ if (CharSequenceUtil.isNotEmpty(searchDTO.getPromotionsId()) && CharSequenceUtil.isNotEmpty(searchDTO.getPromotionType())) { filterBuilder.must(QueryBuilders.wildcardQuery("promotionMapJson", "*" + searchDTO.getPromotionType() + "-" + searchDTO.getPromotionsId() + "*")); } + + if (Objects.nonNull(searchDTO.getNeedFilterPre()) && searchDTO.getNeedFilterPre()) { + // 杞崲涓哄綋澶� 00:00:00 鐨勬椂闂存埑锛堟绉掞級 + long time = LocalDate.now().atStartOfDay(ZoneId.systemDefault()) + .toInstant() + .toEpochMilli(); + // 鏉′欢2锛氶鍞粨鏉熸椂闂� >= 褰撳墠鏃堕棿 OR 缁撴潫鏃堕棿涓虹┖ + filterBuilder.must(QueryBuilders.boolQuery() + .should(QueryBuilders.rangeQuery("preSaleEndDate").gte(time)) + .should(QueryBuilders.boolQuery() + .mustNot(QueryBuilders.existsQuery("preSaleEndDate")))); + // 鏉′欢1锛氶鍞紑濮嬫椂闂� <= 褰撳墠鏃堕棿 OR 寮�濮嬫椂闂翠负绌� + filterBuilder.must(QueryBuilders.boolQuery() + .should(QueryBuilders.rangeQuery("preSaleBeginDate").lte(time)) + .should(QueryBuilders.boolQuery() + .mustNot(QueryBuilders.existsQuery("preSaleBeginDate")))); + } //浠锋牸鍖洪棿鍒ゅ畾 if (CharSequenceUtil.isNotEmpty(searchDTO.getPrice())) { String[] prices = searchDTO.getPrice().split("_"); @@ -641,7 +672,7 @@ filterFunctionBuilders.toArray(builders); FunctionScoreQueryBuilder functionScoreQueryBuilder = QueryBuilders.functionScoreQuery(goodsNameMatchQuery, builders) .scoreMode(FunctionScoreQuery.ScoreMode.SUM) - .setMinScore(2); + .setMinScore(0); //鑱氬悎鎼滅储鍒欏皢缁撴灉鏀惧叆杩囨护鏉′欢 filterBuilder.must(functionScoreQueryBuilder); filterBuilder.should(QueryBuilders.boolQuery().should(QueryBuilders.matchPhraseQuery("goodsName", keyword).boost(10))); -- Gitblit v1.8.0