1、我的搜索心路历程回顾自己过去的5年,从一名后端开发工程师,自我摸索、学习、探究,成为一名搜索开发工程师。复盘总结自己经历过的搜索的三个阶段,可简要概括为:(1)关键词搜索、(2)相关性搜索、(3)探索式搜索。 具体如下图:
2、搜索架构当前所在公司属于电商行业,其搜索大体流程上可以归纳为几个阶段 QU(query understanding)->召回->粗排->精排->重排,本文会对QU, 粗排,精排,重排过程简要概述,重点讲解 Elasticsearch 作为搜索引擎在 2.1 QU(query understanding)目的:关键词合理分词,理解关键词意图。 用户搜索时,搜索系统通常会对搜索词先做分词处理,然后经过搜索引擎(ES)进行相似度计算,召回相关doc。但会出现以下badcase难以处理:
2.2 召回目的:提升搜索效率、挖掘潜在相关商品。 召回模块需要尽可能多的召回商品,除结合文本相关性之外,通常还会结合用户行为偏好,热榜高质量商品,向量检索,等多种方式尽可能召回相关商品。 2.3 粗排目的:粗选高质量,相关度高商品,降低精排模型压力。 召回模块的召回结果通常是成千上万的,而精排模型受制于模型复杂度,资源,性能等要求,往往仅能支持数百商品同时预测,所以需要对召回候选集加以处理。 汇总商品质量分、意图分、实体分、文本分,然后通过打分公式,计算汇总每个商品的分数,最终对召回结果取 2.4 精排目的:结合用户行为,商品特征进行二次排序。 排序引擎会结合用户的静态特征,实时行为特征和商品特征,输入排序模型,预测用户的点击、加购、成交概率,然后通过精排公式进行 2.5 重排目的:结合产品及关键词特点,最终处理。 经过粗排,精排后的商品有时候会存在商品类目或标签集中分布,头部商品过度曝光等特点,为保证展示结果的多样性,公平性,往往需要对列表结果进行重排,通常的打散重排方法有 3、Elasticsearch在搜索过程中的应用Elasticsearch 在我司电商搜索中主要应用在以下场景: 3.1 多路召回结合
搜索词与搜索字段域相关性计算(ES multi_fields)。
搜索词类目,品牌,人群,性别,属性召回。
品牌,类目,标签等召回。
基于向量相似度召回相关商品。
聚合用户的类目,品牌,地域等信息,召回一批高度相似的商品。 3.2 补充相关性得分多路召回中的热榜商品召回,离线模型等召回路结果通常是离线计算所得,无法实时匹配关键词及筛选条件,需要经过 Elasticsearch 补充相关性得分,语句如下:
3.3 商品打散抽样通过使用 但需注意此时搜索结果的total 是取样之前的 total,如需准确获取 total,可以使用聚合的方式进行操作,具体语句如下:
4、写在最后做搜索工程师久了之后,会觉得 Elasticsearch 在搜索场景中的贡献有限,尤其是当搜索对NLP及排序算法越发依赖之后,越发有这样的想法。但回想起来,Elasticsearch 的应用场景又不仅限于搜索场景,包括但又不仅限于数据数据统计分析,多媒体数据向量检索去重等。 在面对搜索系统不断进化的过程中,常常有这样的感叹:技术日新月异,新技术永远学不完,算法模型参与的场景越来越多,技术复杂度越来越高,这又何尝不是互联网行业的特点呢?但是我们技术人永远都在面对变化不是么?借用一句富含阿里味的话:永远不变的是变化。 但我应该如何去面对呢?我想我已经想好了自己的面对方法:深挖底层,方能立于不败之地,深入了解数据结构,这样当了解一门新的技术时才能灵活掌握快速上手,做到触类旁通。做到极致,把自己的事情做到极致,或许会用不一样的收获。坚持努力,在自己热爱的领域持续投入,因为我坚信日拱一卒,功不唐捐。 作者作者:Hello郎,Elastic 认证工程师,某电商平台资深搜索工程师。 审稿人:铭毅天下,Elastic 认证工程师,Elastic 中国合作培训讲师,阿里云 MVP,Elastic Stack 技术博文全网累计阅读量 1000万+。 说明上个月,死磕 Elasticsearch 知识星球搞了:“群智涌现”杯输出倒逼输入——Elastic干货输出活动。 后续会不定期逐步推出系列文章,目的:以文会友,“输出倒逼输入”。 推荐 |
|