目标
- 熟悉OpenSearch搜索服务创建流程;
- 学会配置OpenSearch相关性表达式;
- 完成一个视频搜索服务搭建。
创建应用
- 进入OpenSearch管理控制台:http://opensearch.console.aliyun.com/
- 登录到OpenSearch控制台,点击右上角“创建应用”按钮,开始创建一个搜索应用;
- 填写应用名称、选择地域以及应用描述信息(地域选择必须选择“华东1(北京)”】)。点击下一步;
- 勾选“通过数据源创建应用结构”,OpenSearch支持RDS与ODPS的表来直接创建应用结构,这里我们演示下如何通过RDS源来生成应用结构,ODPS类似;
- 选择“RDS”,点击“+新的数据库”,填写上对应的RDS实例名称,并连接(rds实例已经创建好,实例名参照RDS控制台:https://rdsnew.console.aliyun.com/console/index#/rdsList/basic/all/normal,库名:video_search,用户:opensearch,密码:Opensearch1234)
- 找到对应的表,点击确定。
- 这里可以看到,RDS中的表字段已经导入进来,这时候我们需要指定主键字段,并且修改到OpenSearch的字段类型。
OpenSearch支持多表简单join关系,时间关系,我们这里以单表为例。 这里面包含了视频媒体的主要信息,如title:标题、keyword:关键词、type:类型、user:上传者、director:导演、actor:演员、plays:播放次数、img_name:展示图片、area:发布地区、language:语言、description:简介、year:上映时间、length:时长、create_time:上传时间、play_url:视频播放地址;
- 点击下一步,进行搜索字段设置。索引字段主要指需要查询的集合,同类型字段可以做组合查询,比如下例中default索引,如果query=default:’哈利波特’,则会到title、keyword、director、actor、description字段中统一查找。如果query=title:’哈利波特’,则只从title字段中去查找,可以实现影片查询和全库查询的功能。 属性字段主要用来做过滤、统计和排序等功能,这里我们主要提供对时长等的过滤、对发布时间、播放次数等的排序功能。
- 点击完成后,应用创建成功。
OpenSearch支持多表简单join关系,时间关系,我们这里以单表为例。 这里面包含了视频媒体的主要信息,如title:标题、keyword:关键词、type:类型、user:上传者、director:导演、actor:演员、plays:播放次数、img_name:展示图片、area:发布地区、language:语言、description:简介、year:上映时间、length:时长、create_time:上传时间、play_url:视频播放地址;
激活应用
- 点击激活应用,进行激活。这里请务必选择免费容量,以免产生费用,影响使用。
- 这时候可以跳转到应用列表页面,看到我们刚创建的应用,已经在全量数据构建中了。点击进入管理界面,可以对应用进行更多功能的配置。
高级配置
一个搜索应用已经创建成功,全量构建完成后,就可以搜索了。但是搜索出内容后,如何将最优的结果展示出来呢?接下来我们就来对优化项进行配置。
搜索结果排序
- OpenSearch开放了两阶段的相关性排序,可以很好的兼容性能和复杂排序功能的需求。粗排也就是海选,目的是选择尽量好的文档,精排会对已选取的TOP文档进行更细粒度的排序算分。
- 粗排为:static_bm25(),搜索关键词的文本匹配度;
- 精排为:text_relevance(title)*6+text_relevance(director)*2+text_relevance(actor)*2+timeliness(creat_time)+gauss_decay(0,plays,5000,0.000001,0.1),主要参考title、director、actor三部分的匹配度、发布时间的时效性以及播放次数,并进行权重配置。
- 将新配置排序表达式设置为默认,点击保存后即可对查询起作用。
搜索结果展示
OpenSearch允许对搜索结果命中匹配词进行飘红展示和摘要截取,更有利于搜索结果的展示。
下拉提示
- 下拉提示 接下来我们来配置一个在搜索场景中非常常见且有用的功能:下拉提示。目前系统支持支持拼音、前缀、中文等的查询提示。
- 下拉提示会从当前已有的字段中来选取常用关键词,以保证查询是有结果的。同时支持下拉提示中黑白名单的配置。配置完毕后点击“生效下拉提示”即可。
- 生效完毕后,可以做下效果测试。
搜索测试
搜索测试页面是个界面化的搜索测试工具,在排查问题及日常测试过程中非常好用。
结束
至此,一个完整的视频搜索已经完成了,简单吧?接下来,让我们在demo环境中实际创建一个视频看下吧。