电商项目---商品数据检索

本文深入探讨了SolrCloud在商品数据检索中的应用,包括SolrCloud与Zookeeper集群的协同工作原理,以及如何实现商品信息的关键字检索、分页和高亮显示。此外,还介绍了如何利用Solr进行区间过滤查询,以及商品基本信息和描述信息的查询策略。

学习主题:商品数据检索

1.Solr集群_SolrCloud环境搭建_数据导入

(1)谈谈对象SolrCloud的理解,SolrCloud进行数据写入的工作过程。

SolrCloud(solr 云)是 Solr 提供的分布式搜索方案,当你需要大规模,容错,分布式索引和 检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用 SolrCloud 的, 当索引量很大,搜索请求并发很高,这时需要使用 SolrCloud 满足这些需求
在这里插入图片描述

(2)谈谈SolrCloud和Zookeeper集群的关系

SolrCloud 不同于 redis 集群自带集群,SolrCloud 是基于 Solr 和 Zookeeper 的分布式搜索方 案,它的主要思想是使用 Zookeeper 作为集群的配置信息中心

2.实现商品信息关键字检索_分页_高亮显示

(1)描述Solr实现高亮显示的步骤

SearchItemServiceImpl:
package com.bjsxt.ego.search.service.impl;

import com.bjsxt.ego.rpc.pojo.TbItem;
import com.bjsxt.ego.rpc.service.ItemService;
import com.bjsxt.ego.search.dao.ItemDao;
import com.bjsxt.ego.search.entity.SearchResult;
import com.bjsxt.ego.search.service.SearchItemService;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

@Service
public class SearchItemServiceImpl implements SearchItemService {

    @Autowired
    SolrServer solrServer;

    @Autowired
    ItemService itemService;

    @Autowired
    ItemDao itemDao;

    @Override
    public SearchResult loadItemList(String item_keywords, Integer page) throws SolrServerException {
        SolrQuery query = new SolrQuery();
        /*设置默认查询字段*/
        query.set("df","item_keywords");
        /*设置查询条件*/
        if(!StringUtils.isEmpty(item_keywords)){
            query.setQuery(item_keywords);
        }else{
            query.set("q","*:*");
        }
        /*设置每页显示条数*/
        Integer rows = 20;
        /*设置最小页*/
        if(page<1){
            page = 1;
        }
        /*设置最大页*/
        Integer maxPage = 100;
        if(page>maxPage){
            maxPage = page;
        }
        /*设置高亮*/
        query.setHighlight(true);
        query.addHighlightField("title");
        query.setHighlightSimplePre("<font color='red'>");
        query.setHighlightSimplePost("</font>");

        /*执行查询获取结果*/
        SearchResult result = itemDao.loadItemList(query);
        result.setMaxpage(Long.parseLong(maxPage.toString()));
        return result;
    }

    @Override
    public TbItem selItemBuId(Long id) {
        return itemService.selItemById(id);
    }
}

ItemDaoImpl:
package com.bjsxt.ego.search.dao.impl;

import com.bjsxt.ego.search.dao.ItemDao;
import com.bjsxt.ego.search.entity.Item;
import com.bjsxt.ego.search.entity.SearchResult;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.beans.DocumentObjectBinder;
import org.apache.solr.client.solrj.impl.CloudSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

@Repository
public class ItemDaoImpl implements ItemDao {

    @Autowired
    CloudSolrServer cloudSolrServer;

    @Override
    public SearchResult loadItemList(SolrQuery query) throws SolrServerException {
        QueryResponse resp = cloudSolrServer.query(query);
        SolrDocumentList list = resp.getResults();
        SearchResult result = new SearchResult();
        result.setTotal(list.getNumFound());
        /*获取高亮信息*/
        Map<String, Map<String, List<String>>> highlighting = resp.getHighlighting();
        //List<Item> itemList = new ArrayList<>();
        //将docList转化为List<Item>
        DocumentObjectBinder binder = new DocumentObjectBinder();
        List<Item> itemList = binder.getBeans(Item.class,list);
        for(Item item:itemList){
            String id = item.getId();
            //获得某个商品信息的高亮数据
            Map<String, List<String>> map = highlighting.get(id);
            //获得某个商品的某个字段的高亮数据
            List<String> title = map.get("title");
            if(title!=null&&title.size()>0){
                item.setTitle(title.get(0));
            }
        }
        result.setList(itemList);

        return result;
    }
}

(2)描述Solr实现区间过滤查询的参数格式

在这里插入图片描述

3.实现商品基本信息查询

(1)描述实现查询商品基本信息的实现思路

当点击链接或者是图片链接时会发送一个请求,携带的参数为商品的id去查询商品的信息,将得到的查询的结果渲染给前台页面

(2)描述商品基本信息显示图片响应格式

@RequestMapping("/{url}")
public String showPage(@PathVariable String url, String q, Model model,@RequestParam(defaultValue = "1") Integer page){
    //调研业务层方法
    String kws=null;
    try {
        kws = new String(q.getBytes("ISO-8859-1"),"UTF-8");

        SearchResult result = searchItemService.loadItemList(kws,page);

        model.addAttribute("query", kws);
        model.addAttribute("itemList", result.getList());
        model.addAttribute("page", page);
        model.addAttribute("maxpage", result.getMaxpage());
    } catch (Exception e) {
        e.printStackTrace();
    }
    return url;
}

4.实现商品描述查询_格参数信息查询

(1)描述实现商品描述信息的查询思路

当加载页面时会发送一个ajax请求查询商品的详细信息,携带的参数为商品的id去查询商品的信息,将得到的查询的结果渲染给前台页面,会延时显示

(2)描述实现商品规格参数信息的查询思路

当点击商品规格时会发送一个请求查询商品的规格信息,携带的参数为商品的id去查询商品的信息,将得到的查询的结果渲染给前台页面

内容概要:本研究聚焦于绿电直连型电氢氨园区的优化运行,提出一种集成绿色电力直接供给、电解水制氢及氢气合成氨工艺的综合能源系统架构。通过建立包含风光发电、电解槽、氨合成反应器、储氢罐、电网交互及多类型负荷在内的系统模型,综合考虑绿电直供优先、能量梯级利用与多能互补原则,构建以系统综合运行成本最小化为目标的优化调度模型。研究采用Matlab与Python工具进行算法求解和仿真分析,利用实际气象与负荷数据完成案例验证,评估了不同运行策略下系统的经济性、可再生能源消纳能力与碳减排效益,为新型电氢氨一体化园区的规划与运行提供了理论依据和技术支撑。; 适合人群:具备一定电力系统、新能源或化工背景的研究生、科研人员及从事综合能源系统规划与优化工作的工程技术人员。; 使用场景及目标:①用于科研学习,理解电--氨多能转换系统的建模与优化方法;②为工业园区的低碳化、智能化改造提供技术参考与决策支持;③作为开发类似综合能源管理系统的理论基础。; 阅读建议:此资源包含完整的模型代码、数据与论文,使用者应结合代码仔细研读论文中的模型构建部分,重点关注目标函数与约束条件的设计逻辑,并尝试修改参数进行仿真,以深入掌握优化算法在实际系统中的应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值