电商商品搜索:需求方案和实现原理(“搜索产品经理”的传送门)
唧唧歪歪PM
共 3938字,需浏览 8分钟
·
2021-08-13 02:49
阅读本文10分钟,约3.8K字。
本文借助案例,分析了电商搜索商品的实现原理。
产品就能理解搜索做到什么程度、要准备哪些工作,以及输出合格的PRD,并“指导”开发人员实现。
目录
1、从一个bug说起
2、C端商城高并发搜索
3、商城搜索的一般机制
4、ES的引入,解决了什么痛点
5、总结和意义
一类是通过中间服务ES这种搜索引擎中间件,进行缓存和查询支持。
另一类是接口,拉取数据库的商品资料;
1、搜索引擎的运算
这里最麻烦的是,命中的逻辑机制,也就是搜索的运算。所以很多架构中独立出来一个搜索服务,专门为C端提供快速的运算。
比较成熟的方法很多我这里举两个例子:一个是分词匹配,一个是逐字匹配。
搜索的时候,输入关键词。一般采用的是分词搜索技术。ES自带这种技术插件。
先初始化:
应用场景:
总结:
注意:
过滤词库:
还有不少关键字比较敏感,比如涉黄、涉赌等等,这些关键字我们通常都会屏蔽,不进行数据搜索。
要屏蔽对应的关键字,后台就需要维护一套非法词库,当用户输入的关键字在非法词库中就不再做搜索,以减轻服务器压力。
网上一般有现成的词库可以直接导入系统,不满足的后台再进行维护扩充。
其他辅助词库
比如错误词纠正、还可以做近义词库:比如“维生素”=V,以及大小写字母通用等。推荐词库等。
逐字匹配:
(1)用什么数据库好?(mysql、sybase、oracle、达梦、神通、mongodb、hbase…) ; (2)如何解决单点故障;(lvs、F5、A10、Zookeep、MQ) ; (3)如何保证数据安全性;(热备、冷备、异地多活) ; (4)如何解决检索难题;(数据库代理中间件:mysql-proxy、Cobar、MaxScale等;) ; (5)如何解决统计分析问题;(离线、近实时)
当我们的数据达到PB级别时,按照每个节点96G内存计算,在内存完全装满的数据情况下,我们需要的机器是:1PB=1024T=1048576G,节点数=1048576/96=10922个。 实际上,考虑到数据备份,节点数往往在2.5万台左右。成本巨大决定了其不现实!
后端产品体系对技术方案的依赖,需要产品经理理解这种机制。
产品经理需协助沟通ES收录的字段范围,需要在PRD中说明。
在需求方案和刷数据等环节,避免与开发产生过大的脱节。
评论