电商平台-搜索模块的设计与架构

电商商业平台技术架构系列教程之:电商平台系统架构设计 作者:禅与计算机程序设计艺术 1.背景介绍 电商平台系统架构设计是一个综合性的技术集成课题,涉及到公司对电商平台运行环境、人员结构、信息系统、运营策略、技术方案等方面的建设工作,其目的就是为了提升公司在电商领域的整体技术能力水平,构建可靠的、高效的电商产品和服务,通过运用数字经济、区块链、人工智能等 阅读详情

说明:搜索模块针对的是买家用户,在找菜品找的很费劲下的一种查询方面。目前也是快速的检索商品。

           对于移动端的APP买家用户而言,要求的速度在3秒内完成。支持模糊查询,由于业务实战表面,整个搜索频率不到18%-25%之间

          同时业务也不算很大,所以并没采用java全文检索技术.(lucene等)。这里采用的就是基本的模糊查询。

 

1. 搜索维度的是思考。

             1.1  买家搜索的内容很有可能是针对菜品的本身属性而言,所以涉及到的内容有商品名称,商品别名,商品标签,商品描述,规格的名称,加工方式等。

             1.2  我们知道模糊搜索会导致索引失效,同时整个查询性能也是有影响的。

             1.3 业务形态显示有些热点的词语与内容可以做JVM缓存以提高整个单品的购买率。比如土豆现在分析出很多人要,如果我们可以跟某个商家谈好,一天

需要10w斤土豆的量进行供应,那么整个页面会出现这个关键字的默认显示。这个是后端灵活配置的。

 

2. 对于买家搜索的关键字,我们需要数据库进行记录,这样可以从系统级别算出买家会需要什么,可以进行针对性的营销.

 

相关数据库表的设计如下:

CREATE TABLE `buyer_search` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自动增加ID',
  `buyer_id` bigint(20) DEFAULT NULL COMMENT '买家ID',
  `words` bigint(20) DEFAULT NULL COMMENT '卖家ID',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='买家搜索记录表';

补充说明:目的其实是很明确的,就是记录买家搜索的关键字以便分析与研究用。为了更好的体验用户。

 

相关业务代码如下:

  /**
     * APP全文搜索 新
     * @param request
     * @param response
     * @param keyword
     * @return
     */
    @RequestMapping(value = "/search/new", method = { RequestMethod.GET, RequestMethod.POST })
    public JsonResult newSearchGoods(HttpServletRequest request, HttpServletResponse response,Long userId,Long regionId,String keyword){
        try{
            logger.info("SearchController.search.keyword:搜索内容:" + keyword);
            //搜索结果按商家显示
            //List<SellerVo> list = sellerService.searchSeller(regionId,keyword);
            //搜索结果按商品显示
            List<NewSearchVo> list = goodsService.newSearchGoods(userId,regionId,keyword);
            return new JsonResult(JsonResultCode.SUCCESS, "查询信息成功", list);
        }catch(Exception ex){
            logger.error("[SearchController][newSearchGoods] exception :",ex);
            return new JsonResult(JsonResultCode.FAILURE, "系统错误,请稍后重试","");
        }
    }
    

VO对象如下:

/**
 * 搜索显示类(APP全局搜索)
 */
public class NewSearchVo implements Serializable{

    private static final long serialVersionUID = 1L;
        
    /**
     * 来源于users的ID
     */
    private Long sellerId;

    /**
     * 店铺名称
     */
    private String sellerName;
    
    /**
     * 店铺别名,可以理解为简称
     */
    private String sellerAlias;
    
    /**
     * 店铺logo
     */
    private String sellerLogo;
    
    /**
     * 店铺评级,默认为0
     */
    private int sellerRank;
    
    /**
     * 店铺评分
     */
    private Double sellerGrade;
    
    /**
     * 搜索后商品列表
     */
    private List<GoodsVo> searchItemList;

    public Long getSellerId() {
        return sellerId;
    }

    public void setSellerId(Long sellerId) {
        this.sellerId = sellerId;
    }

    public String getSellerName() {
        return sellerName;
    }

    public void setSellerName(String sellerName) {
        this.sellerName = sellerName;
    }

    public String getSellerAlias() {
        return sellerAlias;
    }

    public void setSellerAlias(String sellerAlias) {
        this.sellerAlias = sellerAlias;
    }

    public String getSellerLogo() {
        return sellerLogo;
    }

    public void setSellerLogo(String sellerLogo) {
        this.sellerLogo = sellerLogo;
    }

    public int getSellerRank() {
        return sellerRank;
    }

    public void setSellerRank(int sellerRank) {
        this.sellerRank = sellerRank;
    }

    public Double getSellerGrade() {
        return sellerGrade;
    }

    public void setSellerGrade(Double sellerGrade) {
        this.sellerGrade = sellerGrade;
    }

    public List<GoodsVo> getSearchItemList() {
        return searchItemList;
    }

    public void setSearchItemList(List<GoodsVo> searchItemList) {
        this.searchItemList = searchItemList;
    }
}

3, 数据查询性能暂时的基本满足要求,也贴出来给大家一起参考,目的是共同学习与思考.

 <!-- 全局搜索商品  新-->
    <select id="newSearchGoods" resultMap="newSearchResult">
        <include refid="newSearchSelect" />
        <include refid="newSearchFrom" />
        <include refid="searchWhere" />
        <if test=" keyword != null">
            and (g.goods_name like concat('%',#{keyword},'%')
            or g.goods_as like concat('%',#{keyword},'%')
            or g.goods_label like concat('%',#{keyword},'%')
            or g.goods_brand like concat('%',#{keyword},'%')
            or g.goods_desc like concat('%',#{keyword},'%') 
            or gf.format_name like concat('%',#{keyword},'%') 
            or pm.method_name like concat('%',#{keyword},'%') 
            or s.seller_name like concat('%',#{keyword},'%') 
            or exists(select 1 from category where category_id = g.category_id and category_name like concat('%',#{keyword},'%') )
            ) 
        </if>
        <include refid="searchOrderBy" />
    </select>

总结,由于搜索这块所涉及的业务相对而言比较少,功能也比较单一,含金量不是很高,所以互相学习。

 

对于扩展方案,如果这块的业务发现很大,可以采用中文分词记录,进行数据的挖掘,已经冷热点数据的一个分离等等,这个后期大家有需要的话,我们再研究。

 

相关业务运营截图如下:

 

 



搜索引擎模块 本程序提供了三种实现方法。 第1个是普通搜索,当关键字文本框没有输入任何数据时,单击“搜索”按钮后,可以对数据表中的所有内容进行查询;当在新闻类别选择对话框中选择查询的条件,单击“搜索”按钮后,可以按照新闻类别查询数据表中所有内容;当在关键字文本框中,单击“搜索”按钮后,可以按关键字内容查询数据表中的内容;当在新闻类别选择对话框中,选择新闻的类别,同时在关键字文本框中输入要搜索内容,单击“搜索”按钮后,可以根据这两个条件对数据表内容进行查询操作。 第2个是高级搜索。本实例的高级图书查询功能不但可以查询图书的基本信息,还可以指定图书出版时间的范围、定价范围和页数范围来查询图书信息,另外还有更加详细的图书简介查询,它可以查询多个关键字词、完整字句、模糊字词和不包含的字词等。高级图书查询运行效果如图1.2所示。 第3个是Lucene搜索引擎。在文本框中输入要搜索的关键字,然后单击“搜一下”按钮后,系统将根据索引文件的内容自动进行搜索,将搜索的结果在页面中显示出来,并且将显示的结果中将要搜索的内容进行描红,Lucene搜索引擎运行效果如图1.3所示。 立即下载

相关推荐

ASP.NET 搜索功能模块(数据库+源代码)

根据搜索功能模块的基本要求,本模块主要完成以下任务: 提供用户搜索的入口,包括简单查询和复杂查询入口。 简单查询功能可实现模糊搜索,得到和用户期望值较接近的结果。 高级查询提供多种查询方案,使得用户获得的是最接近期望值的结果。 显示详细的搜索结果。

Java生鲜电商平台-搜索模块的设计与架构

Java生鲜电商平台-搜索模块的设计与架构 说明:搜索模块针对的是买家用户,在找菜品找的很费劲下的一种查询方面。目前也是快速的检索商品。 对于移动端的APP买家用户而言,要求的速度在3秒内完成。支持模糊查询,由于业务实战表面,整个搜索频率不到18%-25%之间 同时业务也不算很大,所以并没采用java全文检索技术.(lucene等)。这...

weixin_30293079的博客 458

高级搜索功能模块源码

高级搜索功能模块源码,包括模糊查询、匹配查询和数据库的设计。

搜索数据建设系列之数据架构重构

百度搜索数据建设以创新实践突破传统数仓挑战,依托宽表模型、计算引擎优化及图灵3.0模式,实现高效稳定低成本,赋能业务敏捷迭代。

lihui49的博客 1164

巨某量引擎后台登录实战笔记 | Playwright自动化框架

自动化框架、Playwright、滑块、巨某量引擎、抖某音系

什么都会一点。 2080

单片机开发者的福音:3步搞定VSCode智能补全(IAR工程+Clangd实战)

本文为单片机开发者提供了一套高效解决方案,通过EIDE插件将IAR工程导入VSCode,并生成关键的compile_commands.json文件,结合Clangd配置,仅需三步即可实现精准的智能代码补全、一键跳转等现代编辑功能,大幅提升嵌入式开发效率。

coffee的博客 523

搜索系统—搜索引擎的原理,架构与细节

1、全网搜索引擎架构与流程全网搜索引擎的宏观架构如上图,核心系统主要分为三部分(粉色部分): spider爬虫系统; search&index建立索引与查询索引系统,这个系统又主要分为两部分:一部分用于生成索引数据build_index; 一部分用于查询索引数据search_index。 rank打分排序系统。 核心数据主要分为两部分(紫色部分): web网页库; index索引数据。 全网搜索

此博客已停用,博文会逐渐转移到新地址,http://blog.youkuaiyun.com/liupeifeng3514 1万+

ABB机器人与西门子PLC、工业相机联合实现无序抓取的完整调试方案

将此方案导入系统后,逐步执行调试,确保各环节信号正常触发,即可实现高效无序抓取!

CHUXUEZHE8210的博客 1993

搜索的基本框架

1、搜索与推荐 用户从海量文本中获取信息主要通过两个途径,搜索和推荐;搜索和推荐的区别在于,搜索是通过输入一定的信息,获取对应的信息,是一个主动获取信息的过程。推荐则是app/web根据用户的历史行为数据,猜测用户的喜好,进行内容的推送。 2、搜索分类 2.1.搜索分类 一般搜索分为大搜和垂搜,大搜就是像百度、google、bing等对相关网页进行搜素。垂搜指的是某一领域的搜索,比如爱奇艺中的视频检索、淘宝的商品检索、贝壳的房子搜索等。 2.2、搜索基本模块 ...

霜叶的博客 1927

CodeBuddy Code CLI 常用工作流:17个实战场景全解析

CodeBuddy Code CLI 17个实战场景解析 本文详细介绍了CodeBuddy Code CLI在17个开发场景中的高效应用,包括: 快速理解新代码库 高效修复Bug 安全重构代码 使用子代理系统处理专业任务 Plan Mode安全分析 自动化测试处理 创建合并请求 文档生成与维护 图片内容分析 文件目录快速引用 每个场景都配有具体命令示例和最佳实践,帮助开发者提升工作效率。

简简单单Onlinezuozuo 1079

从 SAP GUI 走向 SAP Fiori:一套面向 SAP S/4HANA 的用户迁移实战方法论

SAP S/4HANA转型中,用户从SAP GUI迁移到Fiori的难点在于业务价值的重构而非简单的界面替换。Fiori的核心价值在于角色化、实时洞察和智能决策,而非完全替代GUI。成功迁移需分阶段推进:先展示关键角色的价值,建立统一入口,再逐步提高Fiori占比。让用户参与设计比后期培训更重要,需通过具体场景(如采购优先级管理)展示效率提升。迁移策略应平衡新旧界面优势,让Fiori成为业务价值触达的主要方式,而非强制替换。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 236

常用的电商搜索技术架构图

常用的电商搜索技术架构图

weixin_40587144的博客 528

【即插即用模块】注意力篇 | ECCV 2024 | DPB:高低频动态分离+双提示融合,PSNR直冲40+!

本文提出了一种基于频率提示的图像恢复方法FPro,通过动态滤波器分离输入特征的高低频分量,并采用双提示块(DPB)进行频域专属提示生成与调制。DPB包含低频提示调制器(LPM)和高频提示调制器(HPM),分别处理不同频段信号,通过生成提示组件并融合解码器特征来优化恢复效果。实验表明,该方法在U型结构中表现优异,尤其适用于分割、底层视觉和多模态任务。模块通过动态无监督频率分离、频域专属提示生成和适配性融合机制,有效解决了传统方法对频域信息关注不足的问题,显著提升了图像恢复质量。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 147

Java开源生鲜电商平台-搜索模块的设计与架构(源码可下载)

Java开源生鲜电商平台-搜索模块的设计与架构(源码可下载)说明:搜索模块针对的是买家用户,在找菜品找的很费劲下的一种查询方面。目前也是快速的检索商品。           对于移动端的APP买家用户而言,要求的速度在3秒内完成。支持模糊查询,由于业务实战表面,整个搜索频率不到18%-25%之间          同时业务也不算很大,所以并没采用java全文检索技术.(lucene等)。这里采用的...

hongjuntu的专栏 1353

S7-1200PLC 2轴直线插补详细算法(完整源代码)

速度轴V90PN总线伺服梯形加减速速度控制(标准报文1应用)_v90伺服加减速时间怎么调整-优快云博客文章浏览阅读288次。

RXXW_Dor的博客 4258

Apache DolphinScheduler 实现了对 OceanBase 的元数据库支持

Apache DolphinScheduler 是一款开源的分布式工作流任务调度系统,它提供了可视化的工作流设计和调度功能,支持大数据任务的自动化调度和监控。最近的更新中,Apache DolphinScheduler 引入了对 OceanBase 数据库的元数据库支持,这为用户在大数据环境中管理和调度任务提供了更多选择。用户可以通过 DolphinScheduler 提供的可视化界面进行工作流的设计和调度,也可以通过 DolphinScheduler 提供的 API 进行任务的编程调度。

VavzNvml的博客 495

java电商商品搜索_Java生鲜电商平台-搜索模块的设计与架构

说明:搜索模块针对的是买家用户,在找菜品找的很费劲下的一种查询方面。目前也是快速的检索商品。对于移动端的APP买家用户而言,要求的速度在3秒内完成。支持模糊查询,由于业务实战表面,整个搜索频率不到18%-25%之间同时业务也不算很大,所以并没采用java全文检索技术.(lucene等)。这里采用的就是基本的模糊查询。1. 搜索维度的是思考。1.1 买家搜索的内容很有可能是针对菜品的本身属性而言,...

weixin_39936310的博客 364

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

java 电商项目 搜索模块,Java开源生鲜电商平台-搜索模块的设计与架构(源码可下载)...

Java开源生鲜电商平台-搜索模块的设计与架构(源码可下载)说明:搜索模块针对的是买家用户,在找菜品找的很费劲下的一种查询方面。目前也是快速的检索商品。对于移动端的APP买家用户而言,要求的速度在3秒内完成。支持模糊查询,由于业务实战表面,整个搜索频率不到18%-25%之间同时业务也不算很大,所以并没采用java全文检索技术.(lucene等)。这里采用的就是基本的模糊查询。1. 搜索维度的是思考...

weixin_36005427的博客 479

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

mercur架构设计:现代电商平台的技术实现原理

在当今电商领域,多供应商市场平台正成为主流趋势。传统的单体电商架构难以应对复杂的供应商管理、订单分发、佣金计算、支付分账等需求。mercur作为基于MedusaJS构建的开源多供应商市场平台,通过现代化的架构设计解决了这些技术难题。 本文将深入解析mercur的架构设计原理,从技术栈选择、模块化设计、数据模型到系统集成,全面揭示现代电商平台的技术实现奥秘。 ## 技术栈与整体架构 ### 核...

gitblog_00280的博客 728

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

mall-swarm搜索服务:Elasticsearch商品搜索实战

mall-swarm搜索服务:Elasticsearch商品搜索实战 【免费下载链接】mall-swarm mall-swarm是一套微服务商城系统,采用了 Spring Cloud 2021 & Alibaba、Spring Boot 2.7、Oauth2、MyBatis、Docker、Elasticsearch、Ku...

gitblog_00751的博客 604

构建高并发高可用的电商平台架构实践

转载来源:http://blog.youkuaiyun.com/yangbutao/article/details/12242441

chhuach2005的专栏 1260

SpringCloud + Elasticsearch + Redis + Kafka:电商平台实时商品搜索与个性化推荐实战

八年前,我攥着《Java 编程思想》,对着 IDE 里的红色波浪线发呆。像你现在一样,踩过配置的坑,卡过框架的坎。如今想把那些 “要是早知道就好了” 的经验,慢慢讲给你听。

Minoz_wl的博客 672

用Elasticsearch构建电商搜索平台

电商数据系统主要类型 一个中等的电商平台,每天都要产生百万条原始数据,上亿条用户行为数据。一般来说,电商数据一般有3种主要类型的数据系统: 关系型数据库 ,大多数互联网公司会选用mysql作为关数据库的主选,用于存储商品,用户信息等数据。 关系型数据库对于事务性非常高的OLTP操作(比如订单,结算等)支持良好。 hadoop生态 ,hadoop是数据仓库...

weixin_33947521的博客 446
上一篇: 电商平台-订单抽成模块的设计与架构
下一篇: 电商平台-团购模块设计与架构
代码兄弟
博客等级 码龄11年 53粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值