开发者学堂课程【搜索与推荐技术实战训练营:实战指南】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/919/detail/14485
实战指南
基本内容
一、开发搜索的流程图
二、实际操作
三、测试数据的应用
一、开发搜索的流程图
以上为开放搜索的主要功能
这张图无论是新用户还是老用户,都可以很详细的了解到开放搜索的功能,明确到测试时具体要怎么做,哪些功能对应了哪些需求场景;
如果是新接触的用户,那么需要创建一个开放搜索的应用实例;
如果是老用户,直接有实例可以进行简单的搜索。
首先创建实例,之后配置实例,配置实例有三个步骤:
1、首先要配置实例的应用结构,使数据源的字段与开放搜索应用的字段对应
2、配置索引结构,索引结构就是用来通过后期进行搜索服务。
3、把数据接入到开放搜索中,需要对应的数据源。当实例配置成功之后,就可以进行简单的搜索。
两种搜索方式:
1第一种在控制台上搜索,进行测试;
2第二种就是通过代码的方式就进行搜索的召回;
如果对这个搜索服务、搜索结果不满意,有三种方式可以去掉;
首先,分词效果不理想。因为不同的行业有不同的分词,也有不同的需求;可能同样的词在不同的行业里面对于分词的要求是不一样的,那么开放搜索所便提供了自定义分词的方式方式,去解决不同行业的一些单词。
其次,当分词理想之后,召回结果是符合需求的,如果把最想要的结果、靠前的召回,开放搜索又提供了排序的功能,可以把最想要的东西排在前面给召回。
1是基础排序;
2是业务排序;
3是算法功能:类目预测和人气模型。
当召回是需要的,并且排序也没问题,此时可能一些用户输入时不会按照正常的方式去搜索,比如说输入的同义词有问题,或者是打错字,或者是输入了一长串文字,有标点符号。那么可能会造成召回的结果不符合预期。
当结果不符合预期的时候,并不是搜索的问题,而是用户的问题,那怎么可以去分析用户的查询意图呢?
此时开放搜索提供了查询分析功能,可以通过词权重、拼写纠错、停用词、同义词、实体识别这五大方面去理解用户的意图,让用户在搜索意图不明确的情况下,也可以搜索到想要的内容。
当搜索服务已经完全符合业务需求时,如果想丰富搜索服务,给用户带来更好的体验,此时开放搜索提供了两种引导方式
1、一种是搜索前的引导,热搜
2、另一种就是搜索中的引导,下拉提示
如果想验证在排序阶段,比如说排序的业务表达式,具体哪一个最符合业务场景,只是可以通过 A/B TEST 的对多个排序表达式进行分流验证,最后得出召回结果最好的那个排序表达式用于搜索场景。
开放搜索提供一些业务运营报表,比如说用户的 PV、UV、高查询,业务运营报表帮助分析这些这个数据的潜在价值,以上是开放搜索的一些主要功能。
二、实际操作
1、首先新建一个应用;打开 开放搜索控制台的主界面,首先选定区域,如果在阿里上还有其他的数据库服务的话,要想把数据库数据接入到开放搜索中,此时需要这个区域和开放搜索的这个区域相对应;以杭州为例,点击左侧的:“应用管理”,新建一个应用程序。
为了降低接入成本,初次接入的用户,会有一个月的免费使用期,它有一些相关限制,可以限制的后付费。存储容量是“一个 G”,计算资源是这个“20SCU”,购买规格是“共享性”-填写“应用名称”-点击“立即购买”-点击“我已阅读”-“立即开通”,此时已经成功的开通了一个实例。
返回控制台,找到对应的应用列表,此时在这个应用列表里就会出现一个新的配置的应用名,可以看到现在这个实际状态处于待配置状态,那接下来就开始配置实例。
2、在实例开通之后,开始配置实例,然后点击”配置“,首先配置应用结构,配置应用结构的方式有四种,这里介绍一下最常用的方式去配置;
3、配置应用有四种常见的方法
(1)第一步:通过数据源创建
选择数据源(RDS 为例子),选择相应的数据源,目前开放搜索可以对应的数据源一共有三种,分别是 RDS、MaxCompute、POLARDB,
选择一个表为主表和一个字段;图表选择这个 products1 为主表,选择 ID 字段为主键字段,我们在副表中选择 pid 为副表主键,用主表主键去关联副表的主键,将这两张表关联起来,选择“下一步”;
(2)第二步:索引结构;
索引字段列表:用于查询;
如果某些字段需要查询的话,可以在上面添加对应的索引字段,填写相应的名称、绑定相应的字段;
最后选择相应的分析器即可。
(3)第三步:数据源
数据源对应的字段映射;
如果需要这个字段,数据库的增量同步的话,可以把这个数据“自动同步”打开,也可以配置过滤条件,把一些不需要的数据同步到公测处理,也可以在这里配置过滤条件,点击“完成”;
下面的一些功能,需要一些测试数据。
(4)第四步:完成
三、测试数据的应用
应用配置完之后处于初始化状态,通过应用的详情去查看;
注意:这个状态,可能是其他状态;这时候是属于索引重建,当索引重建完成之后,这个实例的状态处于正常,此时可以对当前的这个实例进行一些查询;
查询有两个入口可以进入控制台查询,
1在应用管理界面,然后“实力操作”一栏,下面这个搜索测试可以进入搜索测试界面;
2也可以通过这个左侧导航栏里的功能扩展里搜索测试测试,进入搜索测试,选择对应的应用,选择对应的线。
最初的状态是不正常的,等到索引重建完成之后,状态变为“正常”,此时便可以对实例进行查询;
当搜索结果不符合预期的时候,如何去优化?
Ø 结合流程图去优化,首先是分词效果不是很理想,
Ø 在平台中“扩展功能”找到“分析器管理”,找到以“中文通用分析”为例,然后点击“分析测试”,比如输入一个 query,叫 open search 产品文档内容内容,然后点击“测试”,此时就是中文通用分析这个分词,只要在搜索框中输入为 query open search 产品文档或内容,都会将其召回,这是一个通常情况;
下图为分词的测试
Ø 输入个 query,不在系统分词,此时应该自定义词典去干预,首先在“扩展功能”里点击“分析器管理”,新创建一个分词,选择“通用分析”然后点击“保存”,在这个新创建的分词器里面选择“词条管理”,添加一个词条,完成之后,点击“词条管理”-新增干预词条(这是 query 意图不明确时的操作)
二次分词:当自定义分词之后,对分词之后的片段再分词;
重新配置索引之后是需要等待状态变为正常之后才可以查询;
当测试合格之后,将线下应用发布到线上,便可以在应用程序中搜索到自定义的分析方式。
如何让用户感兴趣的文件排在前列?(优化排序位置)
结合“策略管理”来实现
如何避免商家商品名字中关键字出现的多,则搜索排行版靠前的问题?
需要调整排序表达式,在“策略调整”里面创建一个新的策略表达式
编写一个策略表达式,规定关键词个数;
如果用户输入的关键字不清晰或者不明确,该如何优化?
查询分析-添加“同义词”
如何降低配置成本,给用户一个优质的搜索引导?(热搜底纹效果预览)
开启模型之后,它会自动的定期的去训练
热搜的效果预览:弹框每次返回的10个推荐的热搜词,最多20组推荐的热搜词。
底纹的效果预览:弹框每次返回1个底纹词,最多30组推荐的底纹词。
下拉提示
在搜索框中输入一些内容,它会自动的推荐一些文字,提高用户输入效率。帮助用户更快的找到想要的内容。
以下为下拉提示的操作
创建下拉提示
需要将“下拉提示”请求与“搜索”请求关联
将下拉提示请求和搜索请求关联起来后,对业务有如下帮助:
1.可以统计出一些指标, 用于衡量下拉提示对 app 搜索的效果。
指标包括:下拉提示引导 app 搜索 pv,引导 app 搜索点击率,引导搜索无少结果率等,更多详细指标见下拉提示业务指标。
2.基于关联请求数据,得到下拉提示点击结果等数据,优化下拉提示排序模型,进而提升下拉提示对 app 搜索的效果。
关联方法:
在 opensearch app search 请求中,如果此次请求是由下拉提示引导的,则在search 请求中带上参数from request_ _id= {from_ request_ _id}
其中 from_ request_ _id
表示:本搜索请求从哪里引导而来,如果当前的 query 来自下拉提示、热词、底纹等功能的推荐列表,那么请求这个推荐列表的 request ld 可以赋给这个参数,通过关联引导事件,可以计算上游功能的各项指标,衡量使用效果,为优化功能提供依据。搜索处理文档中也有此参数说明。
查看用户最近搜索过的内容(报表统计)
选择对应的指标,便可查看近日用户的搜索情况。