作者:鑫强 艳萍
部门:数据中台
前言在介绍QP前先简单介绍一下有赞搜索平台的整体设计,方便大家快速了解QP在搜索平台中的作用 。下图简单展示了一个搜索请求开始到结束的全部流程 。业务通过简洁的api接入los,管理员在搜索平台新建配置并下发,完成整个搜索接入,并通过A/B Test验证QP带来的优化效果 。
文章插图
文章主要分为5个章节:
- QP的作用
- QP应用整体设计
- QP应用分层设计
- QP算法插件设计
- 总结与展望
在有赞,QP系统专注对查询内容进行结构化解析,整合了有赞NLP能力,提供统一对外接口,与业务逻辑解耦 。通过配置化快速满足业务接入需求,同时将算法能力插件化,并支持人工干预插件执行结果 。
以精选搜索为例,当用户输入衣服时用户往往想要搜的是衣服类商品,而不是衣服架,衣服配饰等衣服周边用品 。通过将衣服类目进行加权,将衣服类的商品排在靠前的位置,优化用户搜索体验 。
文章插图
QP目前应用在新零售,微商城、精选、爱逛买手店、分销市场、帮助中心知识库、官网搜索等场景,通过类目加权,产品词识别,搜索词纠错,同近义词召回提升用户搜索效果 。
二、QP应用整体设计
文章插图
上图完整描述了QP请求流程和配置流程的执行情况 。当搜索请求到达QP时,根据请求体中的场景标记获取QP配置 。QP配置中包含搜索词位置标记,插件列表,dsl改写脚本等内容 。
QP根据配置,按序执行相应插件 。插件在执行后,可通过干预配置以及超参数对结果进行人工干预 。
【浅谈有赞搜索QP架构设计】QP在获取到算法插件执行结果后,根据改写配置,对搜索dsl进行改写 。如将纠错词放置在搜索词同一层级,将dsl改写成fuction score结构进行类目加权 。
三、QP应用分层设计
文章插图
上图按照请求流程从上到下展示了QP的分层设计,接下来将简单描述各层作用:
- controller层:查询改写服务入口,对请求做预处理 。
- service层:根据场景获取QP改写配置,获取dsl里的搜索词,调用相应的插件返回qp结果 。
- plugin层:负责算法插件执行,调用插件对应的算法实现handler,对算法结果做干预并针对调用成功或者失败做处理 。
- handler层:算法具体实现放置在该层,该层会依赖各种算法服务(如小盒子,Milvus等) 。
- Intervener层:负责对handler结果做人工干预 。
- processor层:根据QP改写配置,调用改写插件,完成dsl的改写 。
预处理preprocess插件
按照配置规则对搜索词进行预处理,预处理方式如下:
- 删除特殊符号 " “等;
- 大写转小写,全角转半角;
- 连续英文联合切分,连续数字联合切分,其余单独切分;
- 默认截取list前50个字/词;
- 将list拼接成一个字符串 。
输入:"史蒂夫新款时尚套装夏修身圆领百搭钩花DWF镂空雪纺两件套套裙;"输出:"史蒂夫新款时尚套装夏修身圆领百搭钩花dwf镂空雪纺两件套套裙"
02纠错Correction插件纠错插件的作用是对搜索词中错误内容进行识别,返回正确内容 。样例
输入:[上海牛黄皂]输出:[上海硫磺皂]
当用户输入“上海牛黄皂”时,通过纠错插件能正确输出“上海硫磺皂”,其技术架构如下图所示:推荐阅读
- MySQL解除正在死锁的状态有两种方法
- 为什么你的网站做了SEO却没有看到效果?
- 搜索引擎:你有更多选择,比较流行的5个搜索引擎
- SPI协议并没有我想的那么简单
- 华为|超越Mate的只有Mate!比亚迪电子:为Mate50 Pro提供整机组装
- 生科医学|女孩脱鞋掉出蟑螂吓得大哭已被压扁 害怕到不敢一个人睡:你有蟑螂恐惧症吗?
- 北京有个神奇的东岳庙 北京东岳庙
- 老公搬去跟小三一块住,该怎么挽回 婚姻如何挽回分离小三有技巧
- 进口行李箱哪个品牌好 进口行李箱有哪些品牌的口碑比较好耐用
- 可以减全身的减肥操有哪些