搜索

"搜索"

Posted by zwt on October 15, 2020

概述

通常搜索可以分为三步:

1
2
3
对用户搜索词的预处理与理解
基于第一步的处理进行内容的筛选
对筛选的结果进行排序展现,基于用户的反馈进行新的搜索(比如点击进去某个商品,可以基于此商品进行搜索推荐,或者说点击了某个商品,那么在下一页搜索的结果中可以依据这个信息做新的搜索)

用户搜索流程

搜索整体架构参考:

搜索前

搜索前也就是用户点击搜索框,但是还没有具体输入搜索内容的时候。 淘宝搜索前前端页面:

这也时候,还没有得到用户实时的信息,所以整体的需求来看是一种推荐行为(这个时候要注意做语义归一化,避免浪费坑位)。当前典型的表示是:

1
2
3
4
5
搜索底纹:就是在美团中点击搜索框里面默认自带的搜索词,常见于商品名称关键词、类目词、品牌词或者是特定活动。
搜索发现:相当于推荐的搜索词
历史搜索词(这个假定用户搜索具有一定的重复性)
热门搜索词(类似于冷启动方案)
具体的搜索的物料有:历史搜索词、用户短期或者长期与商品的交互、其他用户在系统中的行为

技术方案

简单一点

1
运营配置

统计版本

1
热门的搜索词、品类或者活动等

模型版本

1
2
3
实时对用户最近一次的点击/收藏/下单/搜索词进行分析,抽取其中的关键词、品类词、活动名等信息,并在搜索框中显示。主要涉及词性标注以及命名实体识别。

各种embedding形式。

搜索中

用户开始输入到输入结束但是还没有点击搜索的时候。

此时主要是辅助为主,典型的表示有:

1
2
3
搜索词自动补全:和下面这种形式的区别在哪里
搜索联想:通过前缀的形式来辅助用户输入,减少错误提高搜索准确度
具体的搜索的物料有:历史搜索词、用户短期或者长期与商品的交互、其他用户在系统中的行为

技术方案

主旨:前缀匹配原则,完整词未出现时使用补全联想功能,品类词为主,当出现明显品类词后,开始出现更细粒度属性和及标签筛选词。

简单一点

1
前缀然后统计次数

模型:

1
前缀,然后 根据模型进行排序。这是要考虑的因素有当前搜索词,用户(性别、年龄等特征)等信息

搜索后

指的是用户输入完成并点击搜索后。

此时首先应该先分析用户的意图为强意图还是弱意图,是偏向购买还是闲逛。不同的类型走不同的排序模型。

主要的表现形式为:

1
2
3
4
内容纠错
排序
筛选器
无结果或者少结果

技术方案:

内容纠错

判断用户输入错误,展现正确搜索词的列表给用户,并告知用户正确的搜索词,并确认是否需要搜索系统判断有误的搜索词(确实存在长尾、低频词的搜索需求存在)。

主要的技术方案:

1
2
简单点的:基于词表,不在词表中就认为是错的,然后通过检索召回排序来筛选可能正确的结果
复杂点的:通过端到端模型训练,准备语料,类似翻译模型来训练

筛选器

当搜索的结果过多或者相关结果参差不齐的时候,召回的商品还是海量的,对于用户想快速找到自己想要的商品仍然是不小的挑战,当然排序或者过滤的功能可以缓解这一情况。

目前筛选器是各大电商搜索的标配。。筛选器通过传递筛选参数,搜索引擎会在原有召回基础上进行商品过滤。

简单来说就是对搜索结果的再筛选:但是筛选的标签需要相关技术来挖掘。主题模型、词性挖掘等

无结果或者少结果

无结果或者少结果通常是以下几个情况导致:

1
2
3
搜索词错误:自动容错
筛选条件过多或者搜索词过于长尾:自动容错,搜索词改写
本身符合搜索的商品很少:相关商品进行推荐或者订阅服务

放弃权重较低的term,扩大检索字段和范围。 纠错、改写。

参考

  1. 电商app搜索
  2. 电商搜索