搜索的后端逻辑
1.1 用户输入Query
查询的意思,为了在数据库中寻找某一特定文件、网站、记录或一系列记录,由搜索引擎或数据库送出的消息。
用户输入的关键词叫做:“Query”
1.2 预处理
搜索引擎可以对用户输入的搜索词做预处理,以此提供用户更想要的搜索结果。
(1)去除搜索词的无用部分
eg:华为手机的充电线
当然违反广告法以及违法、涉黄的词也是无用词。
(2)改写/纠错
eg:华W手机 —> 华为手机;
1.3 分词
分词效果的优化直接影响召回数量,减少无结果率,提高搜索召回质量。
eg:华为手机充电器
差的分词效果:华、为、手、机、充、电、器
好的分词效果:华为、手机、充电器 (有智能联想?)
分词库——有成熟的分词建设。(eg:阿里云开放搜索等)
1.4 同义词扩展
对于分词的优化。
因为在我们的语言中,存在着形态和发音完全不同的两个词有可能表达的一个意思的情况。
同义词:女生和女士;AirPods和苹果耳机
同义词就是用以扩展搜索结果,给用户更多相符合的产品而存在的。
1.5 匹配召回
索引:电商中带有各种商品属性的商品库
商品的结构化数据会存储在索引倒序表中。作为连接用户需求和商品的route
匹配:将用户分词后的“需求”,跟商品的标题,属性,类目,标签,描述等所有索引信息进行匹配召回。
1.6 无&少结果判断
匹配召回时,需要加一种判断,即无结果或有结果的判断。
无结果:抱歉,没有找到商品
少结果:这个关键词搜到小于X个产品
eg:我搜索“XXYYAABB”平台上就无匹配,即无匹配结果。
1.7 类目预测
若搜索匹配召回不是无结果或者少结果的情况,那就进入到类目预测环节。
类目预测:提前预测一下用户到底想要购买哪一类商品
类目预测:根据类目下的文本信息和行为数据,计算query与类目的相关度。从而达到预测query的查询意图的目的,计算哪些类目与query最相关,用类目相关度影响搜索结果的排序。
eg:
当通过行为数据分析,发现搜索”电脑”的用户,大部分的搜索意图都为“笔记本”,那么召回排序上优先“笔记本类目”。
1.8 商品排序
算法1:根据用户的行为数据进行排序
算法2:根据商品的综合评分排序
排序的规则一般都不公开,否则会破坏搜索服务的公正性。
排序的影响因子:
- 店铺维度
- 商品维度
为什么会有这些因子?
价格因子——主要看商品的定价,是否有促销价,历史成交价等。
质量因子——好评率,商品销量、收藏率、加购率、退货率等
1.9 前端渲染
当排序确定后,可直接从商品中心调取商品数据,前端渲染展示给用户,即在搜索结果页看到的商品列表。
确定排序——商品中心调取商品数据——前端渲染