商城项目(2.0版本) day11

本文详细介绍了如何通过Elasticsearch进行搜索页面的平台属性抽取,并结合Java编程实现属性过滤和面包屑功能。涉及ES的基本概念、DSL语句应用以及与SpringBoot的整合,重点展示了如何处理属性列表、面包屑生成和两者之间的合并操作。
摘要由CSDN通过智能技术生成

一、搜索页面平台属性列表

平台属性列表是从搜索结果中抽取出来的,不是根据三级分类id查询的所有平台属性的集合
1 es中使用aggregations聚合函数抽取平台属性

在这里插入图片描述
2使用java代码抽取平台属性

在这里插入图片描述
A 根据skuId去mysql中查询平台属性值的id集合(不推荐)

在这里插入图片描述
B 直接用java集合进行处理
用set集合将不重复的属性值id抽取出来
在这里插入图片描述
调用属性服务attrService根据属性值id将平台属性的集合列表查询出来

在这里插入图片描述

二、面包屑

属性列表和面包屑的URL
在这里插入图片描述

1 当前请求url中所包含的属性=面包屑中所包含的属性
2 属性列表中的属性是排除了当前请求(面包屑请求)中的属性的剩余属性
3 当点击面包屑后=面包屑的url是当前请求-被点击面包屑的新请求
4 当点击属性列表后=属性列表url是当前请求+被点击的属性列表的新请求当前请求的url的参数就是pmsSearchParam是所提交的参数

在这里插入图片描述

在这里插入图片描述
5 面包屑请求
面包屑:用户所点击过的平台属性
当前请求 – 当前面包屑的属性 = 新url

在这里插入图片描述
删除平台属性(单独操作)

// 对平台属性集合进一步处理,去掉当前条件中valueId所在的属性组
String[] delValueIds = pmsSearchParam.getValueId();
if(delValueIds!=null){
    Iterator<PmsBaseAttrInfo> iterator = pmsBaseAttrInfos.iterator();
    while(iterator.hasNext()){
        PmsBaseAttrInfo pmsBaseAttrInfo = iterator.next();
        List<PmsBaseAttrValue> attrValueList = pmsBaseAttrInfo.getAttrValueList();
        for (PmsBaseAttrValue pmsBaseAttrValue : attrValueList) {
            String valueId = pmsBaseAttrValue.getId();
            for (String delValueId : delValueIds) {
                if(delValueId.equals(valueId)){
                    //删除该属性值所在的属性组
                    iterator.remove();
                }
            }
        }
    }
}

制作面包屑(单独操作)

// 面包屑
// pmsSearchParam
// delValueIds
List<PmsSearchCrumb> pmsSearchCrumbs = new ArrayList<>();
if(delValueIds!=null){
    // 如果valueIds参数不为空,说明当前请求中包含属性的参数,每一个属性参数,都会生成一个面包屑
    for (String delValueId : delValueIds) {
        PmsSearchCrumb pmsSearchCrumb = new PmsSearchCrumb();
        // 生成面包屑的参数
        pmsSearchCrumb.setValueId(delValueId);
        pmsSearchCrumb.setValueName(delValueId);
        pmsSearchCrumb.setUrlParam(getUrlParamForCrumb(pmsSearchParam,delValueId));
        pmsSearchCrumbs.add(pmsSearchCrumb);
    }
}
modelMap.put("attrValueSelectedList",pmsSearchCrumbs);

将面包屑和平台属性(合并)

// 对平台属性集合进一步处理,去掉当前条件中valueId所在的属性组
String[] delValueIds = pmsSearchParam.getValueId();
if (delValueIds != null) {
    // 面包屑
    // pmsSearchParam
    // delValueIds
    List<PmsSearchCrumb> pmsSearchCrumbs = new ArrayList<>();
    for (String delValueId : delValueIds) {
        Iterator<PmsBaseAttrInfo> iterator = pmsBaseAttrInfos.iterator();
        PmsSearchCrumb pmsSearchCrumb = new PmsSearchCrumb();
        // 生成面包屑的参数
        pmsSearchCrumb.setValueId(delValueId);
        pmsSearchCrumb.setUrlParam(getUrlParamForCrumb(pmsSearchParam, delValueId));
        while (iterator.hasNext()) {
            PmsBaseAttrInfo pmsBaseAttrInfo = iterator.next();
            List<PmsBaseAttrValue> attrValueList = pmsBaseAttrInfo.getAttrValueList();
            for (PmsBaseAttrValue pmsBaseAttrValue : attrValueList) {
                String valueId = pmsBaseAttrValue.getId();
                if (delValueId.equals(valueId)) {
                    // 查找面包屑的属性值名称
                    pmsSearchCrumb.setValueName(pmsBaseAttrValue.getValueName());
                    //删除该属性值所在的属性组
                    iterator.remove();
                }
            }
        }
        pmsSearchCrumbs.add(pmsSearchCrumb);
    }
    modelMap.put("attrValueSelectedList", pmsSearchCrumbs);
}

6 删除平台属性的同时,也是制作被删的这个平台属性对应的面包屑的时间

在这里插入图片描述

该模块的基本整合

1 es的基本概念,运行原理
2 es的安装、配置、启动运行
3 es的dsl语句,开发工具
4 es整合springboot,es的rest风格api(jest)
5谷粒搜索用es来实现(搜索,过滤)
6谷粒搜索的功能(属性过滤、面包屑)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值