搜索系统 基础教程

搜索 query 分析

搜索系统 索引教程

搜索系统 高级教程

搜索系统 排序层

搜索系统 笔记

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/search-feature.html

搜索系统特征体系工程搭建详解


搜索系统的特征体系的前瞻性设计是一个一劳永逸的工作,合理的设计可以为日后算法迭代工作提供高效的开发效率,本文以作者的实际经验抽象出了搜索系统特征体系的搭建内容。

特征分类

一个健全的特征体系可以以如下三个维度分类:

  1. 以 CIU 区分,即分成上下文特征(Context)项目/物品特征(Item)用户特征(User)
  2. 以特征类别区分,如静态特征动态特征交叉特征向量特征等;
  3. 以特征的时间性区分,分成离线特征实时特征

CIU 分类

上下文特征

上下文特征主要是用户针对搜索系统的请求相关参数,也包括相关的 query 相关分析结果数据,具体如下:

Context
编号 字段 类型 解释 备注
1 query String 搜索 query。  
2 os String 请求的操作系统,可选值 ["android", "ios", "windows", "macos"],主要是四个值。  
3 client String 请求的客户端形式,常用的值 ["app", "h5", "wechat mini program", "pc", "web"]  
4 client_version String 请求客户端的版本。 主要针对 client"app""pc" 时有意义。
5 timestamp Integer 请求的时间戳。  
6 page Integer 请求的页码,第一页从 1 开始。  
7 ip String 请求的 ip。  
8 latitude Float 请求时的定位纬度。 主要是移动端可以获取,有的电脑端的浏览器也可以,但不常用。
9 longitude Float 请求时的定位经度。  
10 country String 国家代码,可以用国际域名缩写,如中国为 "CN" 该参数是主要针对有跨国业务的,如 “抖音” 等。
11 province Integer 省级行政区代码,如北京是 11  
12 prefecture Integer 地级行政区代码,如沈阳市是 210100  
13 county Integer 县级行政区代码,如南京市玄武区是 320102 很少有业务精确到县级行政区。
14 town Integer 乡级行政区代码,如广州市海珠区赤岗街道是 440105001 很少有业务精确到乡级行政区。
15 village Long 村级行政区代码,如江苏省无锡市江阴市华士镇华西村是 320281107200 很少有业务精确到村级行政区。
16 commercial_district Integer 商圈信息。 有些 lbs 业务有商圈的概念。
17 query_ner Array[String] query 的 ner 信息列表。 需要通过算法模型提取出,搜索系统必备。
18 query_nature Array[String] query 的词性信息列表,通过分词后定义的词性信息。 搜索系统必备。
19 query_intention Array[String] query 的意图识别先后顺序列表。 基于业务定义的意图信息识别出的带有顺序的意图列表,搜索系统必备。

Item 特征

item 特征主要是本身的属性特征、统计特征等构成,具体如下:

Item
编号 字段 类型 解释 备注
1 item_id Long 顾名思义 item 的唯一键值。  
2 item_type Integer item 的类型。 根据业务而定。
  create_time Long item 创建时间戳。 绝大多数业务,item 的召回都是优先相对新的 item,利用该字段进行时间衰减处理。
  like_cnt Integer 喜欢数(点赞数)。  
  like_cnt_4_display Integer 外露的喜欢数(点赞数)。 一般很多产品设计,对外暴露的点赞数是“加过工”的,你懂的,如果没有,可以忽略。
  dislike_cnt Integer 不喜欢数(点踩数)。  
  share_cnt Integer 分享数。  
  save_cnt Integer 保存数(收藏数)。  
  report_cnt Integer 投诉数。  
  comment_cnt Integer 一级评论数。  
  reply_cnt Integer 二级评论数(一级评论的回复数)。 二级评论是针对一级评论的评论(回复)。
  view_cnt Integer 浏览数(观看数)。 如果业务是短视频,该字段意义就是播放量。
  view_cnt_4_display Integer 外露的浏览数(观看数)。 对外暴露的浏览数,加过工的。
  click_cnt Integer 点击数。  
  word_cnt Integer 文本数。 一般针对有文本内容的类型。
  image_cnt Integer 图片数。 一般针对帖子、日记内容类的 item。
  audio_cnt Integer 音频数。 针对有纯音频的内容类型。
  video_cnt Integer 视频数。 针对有视频的内容类型。
  like_rate Float 点赞率,点赞数/浏览数。  
  like_rate_wilson_95 Float 95% 的置信水平下的威尔逊区间修订的点赞率。  
  uv_like_rate Float uv 点赞率,uv 点赞数/uv 浏览数。  
  uv_like_rate_wilson_95 Float 95% 的置信水平下的威尔逊区间修订的 uv 点赞率。  
  comment_rate Float 一级评论率,一级评论数/浏览数。  
  comment_rate_wilson_95 Float 95% 的置信水平下的威尔逊区间修订的一级评论率。  
  uv_comment_rate Float uv 一级评论率,uv 一级评论数/uv 浏览数。  
  uv_comment_rate_wilson_95 Float 95% 的置信水平下的威尔逊区间修订的 uv 一级评论率。  
  subscribe_rate Float 订阅率,订阅数/浏览数。  
  subscribe_rate_wilson_95 Float 95% 的置信水平下的威尔逊区间修订的订阅率。  
  uv_subscribe_rate Float uv 订阅率,uv 订阅数/uv 浏览数。  
  uv_subscribe_rate_wilson_95 Float 95% 的置信水平下的威尔逊区间修订的 uv 订阅率。  
  share_rate Float 转发率(分享率),分享数/浏览数。  
  share_rate_wilson_95 Float 95% 的置信水平下的威尔逊区间修订的转发率。  
  uv_share_rate Float uv 转发率(分享率),uv 分享数/uv 浏览数。  
  uv_share_rate_wilson_95 Float 95% 的置信水平下的威尔逊区间修订的 uv 转发率。  
  save_rate Float 保存率(收藏率)。  
  save_rate_wilson_95 Float 95% 的置信水平下的威尔逊区间修订的保存率。  
  uv_save_rate Float uv 保存率(收藏率)。  
  uv_save_rate_wilson_95 Float 95% 的置信水平下的威尔逊区间修订的 uv 保存率。  
  completion_rate Float 完播率,一般播放完 15 秒,定义为完整播放,公式为 满足完播数/浏览数。 这个主要针对视频类的业务。
  completion_rate_wilson_95 Float 95% 的置信水平下的威尔逊区间修订的完播率。  
  uv_completion_rate Float uv 完播率。  
  uv_completion_rate_wilson_95 Float 95% 的置信水平下的威尔逊区间修订的 uv 完播率。  
  repeat_rate Float 复播率,用户针对 item 的播放重复相关指标,复播的用户数/浏览的所有用户。 这是以 uv 维度统计的,也是主要针对视频类的业务。
  repeat_rate_wilson_95 Float 95% 的置信水平下的威尔逊区间修订的复播率。  
  uv_repeat_rate Float uv 复播率。  
  uv_repeat_rate_wilson_95 Float 95% 的置信水平下的威尔逊区间修订的 uv 复播率。  
  ctr Float 点击率,点击数/曝光数。  
  ctr_wilson_95 Float 95% 的置信水平下的威尔逊区间修订的点击率。  
  uv_ctr Float uv 点击率,uv 点击数/uv 曝光数。  
  uv_ctr_wilson_95 Float 95% 的置信水平下的威尔逊区间修订的 uv 点击率。  
  ctr_30 Float 30 天点击率。  
  ctr_30_wilson_95 Float 95% 的置信水平下的威尔逊区间修订的 30 天点击率。  
  uv_ctr_30 Float 30 天 uv 点击率。  
  uv_ctr_30_wilson_95 Float 95% 的置信水平下的威尔逊区间修订的 30 天 uv 点击率。  
  ctr_14 Float 14 天点击率。  
  ctr_14_wilson_95 Float 95% 的置信水平下的威尔逊区间修订的 14 天点击率。  
  uv_ctr_14 Float 14 天 uv 点击率。  
  uv_ctr_14_wilson_95 Float 95% 的置信水平下的威尔逊区间修订的 14 天 uv 点击率。  
  ctr_7 Float 7 天点击率。  
  ctr_7_wilson_95 Float 95% 的置信水平下的威尔逊区间修订的 7 天点击率。  
  uv_ctr_7 Float 7 天 uv 点击率。  
  uv_ctr_7_wilson_95 Float 95% 的置信水平下的威尔逊区间修订的 7 天 uv 点击率。  
  ctr_3 Float 3 天点击率。  
  ctr_3_wilson_95 Float 95% 的置信水平下的威尔逊区间修订的 3 天点击率。  
  uv_ctr_3 Float 3 天 uv 点击率。  
  uv_ctr_3_wilson_95 Float 95% 的置信水平下的威尔逊区间修订的 3 天 uv 点击率。  
  gc_type Integer 生产内容类型,主要有 ugc、pgc、ogc 等等。  
  author_type Integer 作者类型。  
  author_subscribe_cnt Integer 作者订阅数。  

对于搜索还有至少有两个 query 和 item 交叉特征:

query 和 item 交叉特征
编号 字段 类型 解释 备注
  similarity_score Float query 与 item 的相似分。 有的也叫相关性分数,主要有类似 bm 2.5 算法这种相似性分数。
  sort_score Float 粗排得分。 笔者将粗排用 sort 表示,用以和精排的 rank 区分。

User 特征

用户特征主要是用户自身的静态属性特征和用户的一些交互行为数据,具体如下:

User
编号 字段 类型 解释 备注
  user_id Long 用户 id。 一般不会拟合到用户 id 级别。
  gender Integer 性别。  
  age Integer 年龄。 若可以获取准确的数据最好,或者可以大概将年龄分段,如青年、中年、老年等。
特征工程是指确定哪些特征可能在训练模型方面非常有用,然后将日志文件及其他来源的原始数据转换为所需的特征。有这么一句话在业界广泛流传:数据和特 ...
特征工程,是指用一系列工程化的方式从原始数据中筛选出更好的数据特征,以提升模型的训练效果。特征工程是机器学习、深度学习中不可或缺的一部分,在 ...
本章列出了搜索系统开发中常涉及的内容及常见问题的解决方案。 ...
搜索系统的排序层又称为精排层,主要是基于离线训练好的模型,结合模型所用的特征给每个 item 进行打分,然后根据分数进行降序排序。搜索排序模 ...