商品搜索与排序:电商搜索的一般机制总结

2023-06-0918:08:20后端程序开发Comments2,083 views1字数 6707阅读模式

网上购物时,我们可以通过搜索功能直接查找所需的商品,这一过程非常迅捷和便利。为了更快地满足我们的需求,在进行搜索后,系统会按照内部的逻辑进行商品查找。以下简要总结了电商搜索的一般机制。
一 搜索的业务逻辑
搜索查询 → 召回商品 → 排序商品 → 展示搜索结果
当用户在搜索框中输入查询时,系统通过对其语义的理解,召回相关商品,并通过算法进行排序,根据用户的实际搜索意图对商品进行排序,最终满足用户的搜索需求,实现业务转化。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46439.html

商品搜索与排序:电商搜索的一般机制总结

二 具体实现文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46439.html

商品搜索与排序:电商搜索的一般机制总结

1. 用户输入查询,并开始执行搜索。
2. 查询理解
2.1. 查询预处理
由于用户输入的内容可能不规范,因此需要进行预处理。预处理的方式有很多种,如下所示。其中,敏感词库、错词表或纠错模型等可能因业务而异,建议进行特殊维护。
预处理包括对查询进行纠错、分词、拼音转汉字、去除停用词等操作。目前,最常用的中文分词器是HanLP和Elasticsearch中的IK分词器。
假设用户输入了 "康师傅红烧方便面*% "。
分词:首先对整个查询进行分词,得到 "康师傅"、"红烧"、"方便面"、""、"%"。
拼音转汉字:将拼音 "kangshifu" 转化为 "康师傅"。
去除停用词:将 ""、"%" 等无意义的停用词去除。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46439.html

商品搜索与排序:电商搜索的一般机制总结

2.2. 特定跳转
在电商平台上,有时输入的查询关键字不会跳转到结果列表页,而是直接跳转到商家店铺主页或活动页。例如,输入关键字 "阿迪达斯" 可能会直接进入阿迪达斯旗舰店页面或阿迪达斯活动专场页面。
为实现这个功能,后台需要维护一套跳转规则映射库。当用户的搜索关键字与规则库中的关键字匹配时,返回指定的跳转路径,使前端页面直接跳转过去。通常,这些跳转规则会有时间限制。
2.3. query分词
Query分词是将经过预处理的较长关键字拆分为多个合理的较短关键字的过程。它将查询切分为多个术语(terms),例如将"手机淘宝"切分为"手机"和"淘宝"两个术语。通常情况下,分词会根据商品的属性进行拆分。商品属性包括商品名称、品牌、类目、功能、厂家、详情等。在开发过程中,最好选择支持自定义分词的分词系统。如果能找到相关行业的分词系统更好,否则可以基于通用的分词库进行扩展,使其符合业务需求。
2.4. 实体识别(类目预测)
根据用户输入的搜索词来预测用户想要搜索的实体,如商品、内容或表情等。这项技术非常重要,它可以显著提高搜索的准确性。
在进行分词后,我们会得到一个或多个关键字或关键词,每个关键字可能对应一个或多个实体。举个例子,对于搜索词"珠江新城咖啡厅",分词后得到"珠江"、"珠江新城"、"咖啡"和"咖啡厅"等词语。其中,一些词语可能会匹配到特定的实体类别。例如,"珠江新城"可能匹配到商圈或地铁站的实体词库,"咖啡"可能匹配到食物分类的实体词库,"咖啡厅"可能匹配到餐厅类型的实体词库。
举例来说,如果我们得到了分词结果"苹果 手机",对于"苹果"这个词,它既可以对应商品属性中的品牌,也可以对应类目。不同属性的权重是不同的。这一步的实体识别可以为后续的查询改写提供基础。
通常,我们需要首先建立领域内的实体体系,也就是该领域经常关注的属性等。下图是阿里云Opensearch在电商行业建立的实体词库类型的示例。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46439.html

商品搜索与排序:电商搜索的一般机制总结

而对于2.21节中剩下的"康师傅"、"红烧"和"方便面",我们可以进行实体识别,最终得到的结果可能是【品牌:康师傅;口味:红烧;SPU和类目:方便面】。许多词汇可能对应多个实体,例如这里的"方便面"它既是一个SPU又是一个CATEGORY。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46439.html

商品搜索与排序:电商搜索的一般机制总结

这样的实体识别,可以预测用户的搜索意图,在下方做搜索结果的排序时,提高对应实体的排序。比如,在微信搜索中,如果你搜索“高启强表情”,那么微信会优先展示表情的搜索结果。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46439.html

商品搜索与排序:电商搜索的一般机制总结

通过分析用户输入的查询和实际的点击行为数据,我们可以将类目下的物品信息与查询联系起来,并使用这些数据来训练模型,以描述查询与类目之间的关联规律。如果查询与某个类目的关联性较高,那么该类目的权重就会较高。
在查询改写过程中,如果原始查询没有类目预测的结果,我们可以根据一定的原则(逐渐去除与类目意图无关或低重要性的词语),再进行类目预测。这样可以提高查询的准确性。
2.5. query改写
1)同义词改写
许多实体词存在完全相同的同义词,因此在查询召回时,我们需要将同义词作为召回条件。例如,"小番茄"和"圣女果"、"香菜"和"芫荽"。这样可以增加对实体的召回准确性。
2)近义词改写
许多词之间并不完全相同,它们也不是包含关系,但存在一定的近似性,可以在某种程度上进行替代。例如,"矿泉水"和"纯净水"、"纯牛奶"和"舒化奶"等。建立近义词词库的原因是,某些场景下用户搜索某个实体时,如果没有该实体的匹配结果,直接展示无结果可能会浪费销售机会。但如果将近义词也展示出来,用户往往仍然会下单,因为二者差异不大。
当然此部分功能,有些APP会做在“为你推荐”里面,具体展现在哪里不重要,背后的逻辑是一致的。
3)意图词改写
意图词与近义词不同,它们在很多情况下存在一种包含关系。例如,"苹果"和"红富士"、"早餐"和"包子、馒头、豆浆"。当用户搜索"红富士"时,如果没有该实体,通过意图词可能会展示其他种类的苹果。当用户搜索"早餐"时,如果既没有"早餐"这个类别,也没有名为"早餐"的商品,我们只能通过这类意图词进行关联。意图词改写能够帮助我们理解用户的搜索意图。
为什么我们将词库拆解的如此细致,分为同义词、近义词、意图词等等,是因为不同场景下我们需要使用不同的词库组合,如果都混合在一起就十分混乱,想拆解时都无法拆解。如何去构建积累上述的词库,一方面需要运营通过人工经验的方式进行添加,另一方面就是机器去历史用户的搜索记录、埋点数据数据等进行挖掘,形成相关词库再进行人工审核。
4)实体权重调整
视业务方具体需求。实体权重调整在综合电商APP使用的是最多的,比如用户搜索【王一博同款白色卫衣限量版】,我们就需要拆分召回条件,如果用【王一博 and 同款 and 白色 and 卫衣 and 限量版】去索引中进行召回,可能召回的结果就会很少。
所以我们需要重新构建召回条件,进行Query改写,挑选比较重要的条件去召回,其他条件忽略。我们可以将Query改写为【王一博 and 白色 and 卫衣 】所以实体与实体之间是存在优先级的,有些实体属性是要优于其他实体属性的。
上述四大类Query改写,同义词改写是必须的,近义词改写和意图词改写一般情况我们都是用在召回结果比较少的搜索场景下使用,希望尽可能多地展示一些搜索结果,不浪费每一次曝光机会。实体权重调整有时候是召回结果过多,需要精简;有时候是召回结果过少,希望扩增,具体视业务需求。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46439.html

商品搜索与排序:电商搜索的一般机制总结

3. 召回
利用实体去物料库进行召回,构建召回条件。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46439.html

在召回过程中,常常需要在"召回率"和"精确率"之间进行权衡。
如果召回的数据太多,可能会包含一些不相关的结果。召回的数据太少,又有可能导致目标结果未被召回。为了优化搜索结果,我们可以通过增加筛选条件和实际识别技术,针对不同实体提供不同的召回率。
例如,在高启强的案例中,通过姓名来搜索"高启强"的人数肯定是最多的,因此"姓名"这个实体具有最高的重要性。通过搜索"旧厂街"来搜索的人数次之,"住址"这个实体可以列为中等重要。而通过身高来搜索高启强的人数肯定比较少,重要性最低。因此,当用户搜索175时,就没有必要召回高启强的数据。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46439.html

商品搜索与排序:电商搜索的一般机制总结

对于多属性的情况,比如【Brand:康师傅;Taste:红烧;SPU&CATEGORY:方便面】,通常我们会将实体之间通过"and"关系进行召回。但是在上述情况中,"方便面"具有两个属性,所以需要分别使用这两个属性进行召回。同时,我们还可以加入同义词来构建新的召回条件,例如"方便面"的同义词"泡面"也属于SPU这个实体,因此可以构建另一个召回条件【Brand:康师傅;Taste:红烧;SPU:泡面】。
在生鲜电商中,召回条件构建比较简单。但在综合电商中,例如用户搜索【王一博同款白色卫衣限量版】,我们需要拆分召回条件。如果直接使用【王一博 and 同款 and 白色 and 卫衣 and 限量版】进行召回,可能得到的结果很少。因此,我们需要重新构建召回条件,进行查询改写,挑选重要的条件进行召回,而忽略其他条件。例如,我们可以将查询改写为【王一博 and 白色 and 卫衣】,这样实体与实体之间存在优先级,有些实体属性比其他实体属性更为重要。
最终,通过召回阶段,我们得到了搜索结果。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46439.html

4. 排序
在排序阶段,被召回的商品会根据商品的综合权重进行排序。商品的搜索和权重设计是各大电商平台的商业机密,通常不会公开透露具体的逻辑。然而,大致上可以有以下模块,各个业务可以根据需求自行裁剪和设计优化。
4.1. 权重
4.1.1 权重概念
权重是指参数指标在整体评价系统中的重要程度。权重越高,表示该指标越重要。
举个例子,考虑一个学校招生考试,有三个科目:语文(100分)、数学(100分)、英语(100分)。根据语文占比30%、数学占比40%、英语占比30%的比例进行累加,得出一个总得分。得分高者优先录取。
其中,各科目的百分比就是它们的权重。如果数学占比为40%,说明该学校对学生的数学成绩更加重视。
计算权重的方法有很多种,例如加权计算法、加权平均数法、AHP层次法、优序图法等。下文以简单的加权计算法为例进行介绍。
4.1.2 加权法
还是上面的例子,如果有个考生的成绩如下:语文(85)、数学(90)、英语(80),那么他的加权计算过程为:85*30% + 90*40% + 80*30% = 85.5——就是简单的【成绩 * 比例】 再累加的过程。
在搜索时,一个商品排序的最终权重值是多个因素共同作用的结果。每个属性的权重越大,表示该因素越重要。需要注意的是,在权重模型中,并不是商品的所有属性都会参与权重计算,只有影响用户搜索习惯和销量等因素才会参与计算。
权重也不必局限于百分制,可以根据商品的属性信息和商品数量的多少来调整权重的区间。这样可以避免最终权重值过于集中。
4.2. 影响最终排序的因素
4.2.1. 文本相关性
文本相关性指的是商品的文本描述信息(包括商品标题、商品名称、类目名称、品牌名、商品参数以及图书类商品的作者、出版社等)与搜索关键词的相关性或匹配程度。不同信息在文本相关性中所占权重也不同。文本相关性可以大致分为高相关度、中相关度和低相关度,对应的权重依次降低。在评分机制中,通常商品标题和关键词的相关度最高,权重也最高。
商品的文本信息中,在选择关键词时应选择行业中搜索指数和成交金额指数较高的关键词,关键词的顺序不会影响搜索权重。但也要注意商品本身与这些关键词的相关性,否则商品的权重也会降低。
4.2.2. 类目相关性
在类目预测中已经提到,不同关键词与类目之间的关联性不同,可以为类目相关性分配适当的权重。通过类目预测,可以得到该关键词与一个或多个类目之间的相关性(属性得分),那些属于这些类目的商品,在类目相关性上就会被分配一定的权重(权重等于属性得分乘以权重)。如果有多个关键词,则类目相关性权重进行叠加。
4.2.3. 价格模型
在评分机制中,每个关键词,在不同价格区间有不同的得分。可以根据提前定义的价格区间表,找到商品对应的价格得分。比如牛仔裤男,客单价整体在146~224元,可以设定价格在该区间的商品,再根据价格在评分机制中的权,最终可以得到该商品价格这个属性的权重值。
4.2.4. 商品综合人气
商品除了基本的属性信息外,综合人气得分,也反应了这个商品是否受欢迎,是否需要被优先展示给用户。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46439.html

商品搜索与排序:电商搜索的一般机制总结

4.2.5. 用户搜索反馈
消费者通过搜索关键词后,点击或购买商品的行为在消费者搜索反馈系统中计为该关键词与该商品的一次点击或购买数据。消费者搜索反馈数据反应了消费者对搜索结果的满意度,同时反应了对商品的满意度。还有跳失率,当然是越低越好。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46439.html

商品搜索与排序:电商搜索的一般机制总结

4.2.6. 平台得分、店铺静态得分
商品在平台上,基本都会产生售前、售中、售后问题。这些问题是否能被友好解决,也会影响该商品的得分。
比如京东的风向标参考:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46439.html

店铺静态得分:
包括店铺是否被处罚、是否被举报、是否被投诉、店铺装修的基本情况等等。
将所有权重累计,得到一个商品在该次搜索中的总权重。每个商品的总权重进行排序,最终将搜索的商品结果列表返回给用户。
下图为一个简单的商品权重模型示例:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46439.html

商品搜索与排序:电商搜索的一般机制总结

4.2.7. 类目影响
比如小米品牌下有多款不同类目的商品,假如有手机和电视两个类目,大家对他的手机认可度比较高,所以手机类目下品牌的得分和权相对就会设置的比较高一些;而电视是刚进入市场,大家对他的接受度与老牌厂商比就略显逊色,所以电视类目下品牌的得分和权就应该设置的低一些。
此外,一些类目具有特殊的属性,需要参与权重计算,例如图书商品的出版社和作者。不同类目的特殊属性也是不同的。因此,在维护权重模型的基本配置时,应以类目为单位进行维护,以实现个性化的权重设计。
4.2.8. 人工干预
在设置好权重配置后,内部通常通过代码逻辑计算获得权重值。然而,如果平台需要推广新品,由于新品缺乏销售数据,其排名默认会较低。因此,需要设计一个维护入口,通过人工单独为商品增加权重数值,将新品的排名提前以达到推广的目的。
4.2.9. 外界因素影响
对于某些商品的个别属性,其权重值可能受到外部因素的影响。例如,服饰和鞋类商品的材质属性受季节影响。对于一双登山鞋,如果其材质分别为棉绒和涤纶,在夏天搜索关键词"登山鞋"时,涤纶材质的商品应该在排名靠前,而棉绒材质的商品则在排名靠后。因此,在进行计算时需要考虑这些依赖条件。
4.2.10. 千人千面
其实每个消费者只要有在淘宝网上购买或是浏览过,平台就会给用户打上标签,比如年龄、客单价、喜好、关注点等。根据用户标签的不同,每个用户访问APP时展示的商品就会有所差别。假设两个男生从来没有买过女性产品,第一次给女性买东西,搜索同一个关键词比如“连衣裙 女”,他们看到的商品列表也不一样,平台会根据你以往的一些购买行为打上标签,比如用户有“年轻、高客单价、爱名牌”等标签,那么展示给这个用户的就会是年轻款、高客单价的连衣裙相关商品。也就是说:根据用户的标签特征,将最有可能成交的商品优先推荐给相应的消费者,最大限度的提高购买转化率,促进用户购买下单。这就是千人千面的主要目的。
上面我们提到的用户标签,我们也经常称之为“用户特征”。我们一般会维护一个用户特征数据库,这是千人千面的基础。在搜索和推荐时往往需要这些用户特征数据。
个性化排序是为了满足不同消费者在相同搜索词下的不同需求而进行的排序服务。目前的个性化排序逻辑通常基于消费者的浏览、加购、购买、搜索、咨询等行为权重进行计算排序。对于没有访问过的店铺,主要依据商品本身的销量、评价、浏览量等进行综合排序。
个性化搜索排序的实现涉及多个因素,包括消费者的浏览数据、购买数据,以及消费者的性别模型、购买力模型等数据。这样可以使排序结果多样化,满足不同消费者的不同搜索需求。此外,为了改善搜索体验,搜索结果中无货的商品会被降权处理,减少对搜索体验的影响。
个性化搜索排序一直在不断进行优化,不但能增加用户粘度,而且还增加买卖匹配的精准性,提升消费者搜索体验的同时,为商家带来更精准流量。
其次,千人千面主要包含哪些因素?影响千人千面的因素非常多,李老师在这里为大家梳理几个主要因素:客户关系、人群标签、商品标签、商品/店铺基本素养。客户关系是指客户浏览过、收藏过、加购过、购买过的商品,客户收藏的店铺,购买过的店铺,关注的店铺。人群标签是指产品的基础人群,包括性别、年龄、消费能力、城市、职业、婚恋阶段、是否有房。商品标签是指产品的类目和属性。商品/店铺基本素养是指店铺和产品是否违规扣分、动态评分、好评率、退款率、纠纷率等。
这么多影响因素,那千人千面的展现逻辑是什么样的?
1)客户关系:搜索结果页面会优先展示与用户有客户关系的商品。这包括最近用户浏览过、收藏过、加购过的商品,当然,搜索展现的前提是标题包含搜索的关键词。
2)标签商品和关键词权重:如果没有客户关系的商品,搜索结果页面会展示就直接展现标签商品和关键词权重高的商品。
3)活动页面:活动页面也是按照这样的逻辑展现的,点击浏览、收藏、加购、关注的商品会优先展示。
4)推荐页面:在推荐页面中,千人千面会优先展示人群标签的商品。比如,对A商品感兴趣的人群,推荐页面会展示和A商品接近的商品,这就是千人千面的力量。除此之外,无论是搜索结果页面、推荐页面还是活动页面,如果商品有违规、店铺动态评分偏低、退款率较高的,商品的展现机会都会减少。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46439.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/bc/46439.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定