全部产品

热搜和底纹

更新时间:2020-09-23 11:51:55

什么是热搜和底纹

热搜和底纹是一个完整搜索引擎必备的基本功能,通常占据着搜索框入口的重要位置,提供不可或缺的业务价值。我们来看一个典型电商平台的热搜和底纹的位置。

1

一般而言,越上游的环节,对于达成业务目标有着越重要的决定作用,热搜和底纹处于搜索引擎整个工作流程的最上游,如果运营得好,将为后续环节的优化起到非常好的铺垫作用,可以大大降低后续query理解、相关性、排序、运营干预等环节的调优难度,并且结合运营策略对提升业务目标可以有比较大的发挥空间。我们可以站在不同的角度来看待热搜底纹在业务上的价值:

从用户的角度来看,热搜底纹一般可以满足如下的需求:

  1. 我想随便逛逛,不知道搜什么好,能不能给我推荐一些优质的查询词?
  2. 我想知道大家都搜了些什么,随大流不会错
  3. 最好能结合我的兴趣给我推荐query,也要有多样性,我既想看感兴趣的内容,又想探索一些兴趣之外的内容

从运营者的角度,热搜和底纹可以提供这样的价值:

  1. 我们想知道哪些query被搜得最多,热门query是用户兴趣的风向标,通过分析热门query我们可以把握用户的兴趣走向,对制定运营策略,比如促销、补货、做活动等提供一些决策依据
  2. 我们想给用户推荐一些优质query,在用户有输入的情况下,使用下拉提示功能可以对用户意图做引导,但是在用户没有任何输入的时候,如何推荐优质query呢?
  3. 如果给用户推荐热门query,又不能总是固定给出最热的那几个query,需要考虑到多样性,一方面兼顾用户体验,另一方面需要给部分次热门query一些曝光机会
  4. 通过分析用户的行为,结合用户的兴趣来推荐query,既兼顾用户体验,又可以有的放矢的提升业务目标

使用流程

热搜和底纹的使用步骤为:

  1. 创建及训练模型。
  2. 获取热搜/底纹结果。

1. 创建及训练模型

1.1 创建方法:

  • 调用API/SDK创建模型 (api文档链接, SDK Demo请参考下文)
  • OpenSearch控制台界面操作。
    注:上述两种创建方法,任一方法均可。

温馨提示:

  • 目前热搜与底纹算法模型需要通过统计历史搜索请求中设为 raw_query 的查询词来进行训练,若历史搜索请求没有出现过raw_query,模型可能会创建失败。
  • 默认显示热搜榜数据条数是10000条,可根据实际情况进行修改,但最低不少于100条。
  • 目前的算法模型只依赖搜索日志,按照一定算法做统计,暂不支持设定其他训练目标,因此仅需创建模型一次。
  • 系统接收到模型创建请求后,会立刻开始训练模型。
  • 一旦创建模型成功,系统会每天自动重新训练模型,不再需要人为干预。
  • 热搜/底纹模型开启并且已经训练后,可查询半年内任意一个时间段的榜单数据,默认为近14天的榜单数据.

控制台创建热搜和底纹模型

第一步:开启热搜、底纹模型训练:
在【功能扩展—->热搜与底纹】页面,选择对应的应用,开启模型训练:
1

第二步:模型训练:

2

第三步:热搜、底纹效果预览:

热搜效果预览
3
底纹效果预览
4

注意

  • 热搜的效果预览,弹框每次返回的10个推荐的热搜词,最多20组推荐的热搜词。
  • 底纹的效果预览,弹框每次返回1个底纹词,最多30组推荐的底纹词。

SDK创建热搜和底纹模型

管控SDK依赖:

  1. <dependency>
  2. <groupId>com.aliyun</groupId>
  3. <artifactId>aliyun-java-sdk-opensearch</artifactId>
  4. <version>0.7.0</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.aliyun</groupId>
  8. <artifactId>aliyun-java-sdk-core</artifactId>
  9. <version>4.5.0</version>
  10. </dependency>

Java SDK Demo

  1. import com.aliyuncs.DefaultAcsClient;
  2. import com.aliyuncs.IAcsClient;
  3. import com.aliyuncs.exceptions.ClientException;
  4. import com.aliyuncs.exceptions.ServerException;
  5. import com.aliyuncs.http.FormatType;
  6. import com.aliyuncs.http.HttpResponse;
  7. import com.aliyuncs.opensearch.model.v20171225.*;
  8. import com.aliyuncs.profile.DefaultProfile;
  9. public class CreateModel {
  10. public static void main(String[] args) {
  11. DefaultProfile profile = DefaultProfile.getProfile("cn-beijing", "<accessKeyId>", "<accessSecret>");
  12. IAcsClient client = new DefaultAcsClient(profile);
  13. CreateModelRequest request = new CreateModelRequest();
  14. request.setAppGroupIdentity("app_name");
  15. //type为算法类型:热搜设置为hot,底纹设置为hint;modelName为模型名称:自定义,由英文数字、字母、下换线组成,非纯数字,不超过30个字符
  16. String content = "{\"type\": \"hot\",\"name\": \"model_name\"}";
  17. request.setHttpContent(content.getBytes(), "UTF-8", FormatType.JSON);
  18. try {
  19. HttpResponse response = client.doAction(request);
  20. System.out.println(response.getHttpContentString());
  21. } catch (ServerException e) {
  22. e.printStackTrace();
  23. } catch (ClientException e) {
  24. e.printStackTrace();
  25. }
  26. }
  27. }

2. 获取热搜/底纹结果

在产品中集成热搜和底纹功能,可以通过API/SDK来调用热搜底纹的推荐结果,热搜和底纹api文档。SDK Demo请参考下文。

热搜功能默认返回10个query,底纹功能默认返回3个query,用于在搜索框中轮播。

温馨提示:

  • 目前没有获取算法任务执行状态的接口,需要用户调用API/SDK根据是否有结果来判断是否可使用。
  • 一旦调用创建模型成功后,后续每日系统内部会自动执行算法训练任务,用户每日通过API/SDK获取更新的热搜词即可。

流量SDK依赖:

  1. <dependency>
  2. <groupId>com.aliyun.opensearch</groupId>
  3. <artifactId>aliyun-sdk-opensearch</artifactId>
  4. <version>3.5.0</version>
  5. </dependency>

Java SDK Demo

  1. import java.util.HashMap;
  2. import java.util.Map;
  3. import com.alibaba.fastjson.JSON;
  4. import com.aliyun.opensearch.OpenSearchClient;
  5. import com.aliyun.opensearch.sdk.generated.OpenSearch;
  6. import com.aliyun.opensearch.sdk.generated.commons.OpenSearchClientException;
  7. public class Hot {
  8. private static final String accesskey = "替换为accesskey";
  9. private static final String secret = "替换为secret";
  10. private static final String host = "替换为endpoint, 例如:http://opensearch-cn-hangzhou.aliyuncs.com";
  11. private static final String appName = "替换为opensearch应用名";
  12. private static final String HOT_API_PATH = "/apps/{app_name}/actions/hot";
  13. public static void main(String[] args) {
  14. OpenSearch openSearch = new OpenSearch(accesskey, secret, host);
  15. // Create OpenSearchClient
  16. OpenSearchClient client = new OpenSearchClient(openSearch);
  17. String requestPath = HOT_API_PATH.replaceAll(("\\{app_name\\}"), appName);
  18. Map<String, String> params = new HashMap<>();
  19. params.put("model_name", "your_model_name");//设置模型名称
  20. params.put("hit", "20");//设置查询的热搜词数据条数
  21. try {
  22. String response = client.call(requestPath, params, OpenSearchClient.METHOD_GET);
  23. System.out.println(JSON.toJSONString(response));
  24. } catch (OpenSearchClientException e) {
  25. e.printStackTrace();
  26. }
  27. }
  28. }

效果优化

行为数据

基于统计搜索日志的热搜/底纹结果可以满足冷启动阶段的需求,在这个功能开始发挥作用后,我们建议关联热搜/底纹的用户点击事件,系统内部通过采集行为数据(from_request_iduser_id)来进一步优化效果,采集了行为数据有如下几个收益:

  1. 可以统计得到各项指标,诸如引导搜索的pv、uv、无结果率等,用来衡量这个功能的使用效果,为后续的改进提供依据。
  2. 可以分析用户群的兴趣走向,为制定运营策略提供依据。
  3. 可以采用智能化的手段来推荐query,通过用户的点击行为对数据进行标注,可能根据不同的优化目标来训练模型(默认按点击率优化),通过模型来推荐query,具备较强的泛化能力。
  4. 可以做个性化的热搜词推荐,我们知道了用户点过哪些query,就可以结合用户的偏好做出有针对性的推荐。

热搜/底纹引导搜索流量

API/SDK获取到的热搜/底纹结果中会返回一个request_id, 用于唯一标识这一次请求。通常,如果产品中集成了热搜/底纹结果,当终端用户点击了热搜词或底纹词后,便会以该热搜词或底纹词作为搜索词触发一次搜索请求,通过在搜索请求中将from_request_id参数设置为热搜/底纹结果返回的request_id,就可以关联这一次用户点击行为,后台通过搜索日志分析和统计了这些点击行为,就可以在业务运营报表中看到由热搜/底纹引导的搜索流量指标。如果在搜索请求中设置了user_id参数,业务运营报表中还可以看到热搜/底纹引导的搜索UV指标。

温馨提示:

  • 由于搜索的翻页请求也会被认为是独立的搜索PV,所以对于热搜/底纹引导的搜索请求翻页时候,也同样要设置from_request_id参数。
  • 搜索请求的参数详情,请查阅from_request_iduser_id的参数说明。

业务运营报表

界面

可以通过【功能扩展—->热搜与底纹】,“查看指标”进入热搜底纹的运营报表,也可以直接在“报表统计”里查:
热搜:
a底纹:
b

指标

核心指标:

名词 释义 依赖
热搜/底纹PV 请求热搜/底纹且返回成功的次数,即不包括被限流等原因导致返回错误的请求 当应用有搜索日志时,就会做统计
热搜/底纹UV 请求热搜/底纹且返回成功的用户数,即不包括被限流等原因导致返回错误的请求 依赖通过SDK/API搜索时,搜索请求中设置了user_id参数
热搜/底纹有点击PV占比 计算公式:热搜/底纹有点击的PV / 热搜/底纹PV 依赖通过SDK/API应用搜索时,搜索请求中设置了from_request_id参数
热搜/底纹IPV 热搜/底纹结果被点击的次数 依赖通过SDK/API应用搜索时,搜索请求中设置了from_request_id参数
热搜/底纹IPV_UV 在热搜/底纹结果页中点击了结果的用户数 参考指标:热搜/底纹UV,热搜/底纹IPV
热搜/底纹请求失败次数 由于被限流等原因导致返回错误的请求次数 当应用有搜索日志时,就会做统计

引导搜索:

名词 释义 依赖
引导搜索PV 点击热搜/底纹结果进行搜索的次数 依赖通过SDK/API应用搜索时,搜索请求中设置了from_request_id参数
引导搜索UV 点击热搜/底纹结果进行搜索的用户数 1.依赖通过SDK/API搜索时,搜索请求中设置了user_id参数
2. 参考指标:热搜/底纹IPV
引导搜索PV占比 热搜/底纹引导搜索pv / 搜索pv 参考指标:热搜/底纹IPV
引导搜索UV占比 热搜/底纹引导搜索uv / 搜索uv 参考指标:热搜/底纹IPV;引导搜索UV
引导搜索无结果率 热搜/底纹引导且无结果的搜索pv / 热搜/底纹引导搜索pv 参考指标:热搜/底纹IPV
引导搜索有点击PV占比 热搜/底纹引导且有点击的搜索pv / 热搜/底纹引导搜索pv 1.参考指标:热搜/底纹IPV
2.依赖开通数据采集功能,并且同步了应用搜索结果点击事件。

排序指标:

名词 释义 依赖
TOP1_有点击PV占比 热搜/底纹top1有点击的PV / 热搜/底纹PV 参考指标:热搜/底纹IPV
TOP3_有点击PV占比 热搜/底纹top3有点击的PV / 热搜/底纹PV 参考指标:热搜/底纹IPV
TOP5_有点击PV占比 热搜/底纹top5有点击的PV / 热搜/底纹PV 参考指标:热搜/底纹IPV