电商|电商搜索系统精讲系列三步曲2( 三 )


所以我们在做产品原型设计的时候也要考虑搜索的关键词与商品类目的相关程度,需要在原型的设计里面增加类目预测的模型的设计;
再来回过头看,我前面讲的,排序首选要进行海选也就是粗排,再针对粗排后的商品结果进行精排,粗排已经讲了,精排怎么排?
同样是要通过函数去计算搜索的关键词与商品的相关度,常见的函数有:
文本相关度函数:

  • text_relevance: 关键词在字段上的商品匹配度
  • field_match_ratio:获取某字段上与查询词匹配的分词词组个数与该字段总词组个数的比值
  • query_match_ratio:获取查询词中(在某个字段上)命中词组个数与总词组个数的比值
  • fieldterm_proximity: 用来表示关键词分词词组在字段上的紧密程度
  • field_length:获取某个字段上的分词词组个数
  • query_term_count: 返回查询词分词后词组个数
  • query_term_match_count:获取查询词中(在某个字段上)命中文档的词组个数
  • field_term_match_count:获取文档中某个字段与查询词匹配的词组个数
  • query_min_slide_window:查询词在某个字段上命中的分词词组个数与该词组在字段上最小窗口的比值
地理位置相关性:
  • distance: 获取两个点之间的球面距离。一般用于LBS的距离计算。
  • gauss_decay,使用高斯函数,根据数值和给定的起始点之间的距离,计算其衰减程度
  • linear_decay,使用线性函数,根据数值和给定的起始点之间的距离,计算其衰减程度
  • exp_decay,使用指数函数,根据数值和给定的起始点之间的距离,计算其衰减程度
时效性:
  • timeliness: 时效分,用于衡量商品的新旧程度,单位为秒
  • timeliness_ms: 时效分,用于衡量商品的新旧程度,单位为毫秒
算法相关性:
  • category_score:类目预测函数,返回参数中指定的类目字段与类目预测query的类目匹配分
  • popularity:人气分,用于衡量物品的受欢迎程度
功能性:
  • tag_match: 用于对查询语句和商品做标签匹配,使用匹配结果对商品进行算分加权
  • first_phase_score:获取粗排表达式最终计算分值
  • kvpairs_value: 获取查询串中kvpairs子句中指定字段的值
  • normalize:归一化函数,根据不同的算分将数值归一化至[0, 1]
  • in/notin : 判断字段值是否(不)在指定列表中
以上函数大家不用去研究细节,看看函数的中文解释就好,帮助理解和消化,知道精排的算分怎么统计、哪些维度去统计即可,如果依然不理解的,可以跟我一起交流;
说到现在大家一定很好奇,为什么用户最关心的商品热度没有提到,不着急不着急,接下来,我们就要针对搜索热度比较高的商品一般怎么排序,引入一个新的概念—–人气模型;
上面说的类目预测模型是要实时去计算,而人气模型可以在离线的时候进行计算,一般也叫离线计算模型,这种模型也是淘宝和天猫搜索最基础的排序算法模型。
人气模型会计算量化出每个商品的静态质量以及受欢迎的程度的值,这个值称之为商品人气分,最开始人气模型是来自淘宝的搜索业务,但其实这个模型对于其他的搜索场景也有很强的通用性,在非商品搜索场景中通过人气模型也可以计算出被索引的商品的受欢迎程度,比如某个论坛,可以通过人气模型排序搜索比较多的帖子,把这些帖子内容优先展示给用户;
那么对于一个商品而言,这个人气模型究竟怎么计算,毕竟系统的目标是通过这个模型来计算商品的热度,进而打分排序,你说对吧;
一般情况下,人气模型从四个维度去计算分值,具体如下:

推荐阅读