全部产品

排序插件开发-Cava语言

Cava是OpenSearch引擎团队基于llvm实现的一门高效的编程语言,它的语法和java类似,性能与c++相当。Cava是一门面向对象的编程语言,支持即时编译(jit),支持各种安全检查保证程序更加健壮。使用cava和OpenSearch提供的cava库,在OpenSearch中可以定制自己的排序插件,相比于OpenSearch支持的表达式,使用cava实现排序插件具有以下优点:

  • 更强的定制能力:cava提供了较表达式更加丰富的语法功能,比如for循环,函数定义,类定义等,用户可以实现自己的业务需求

  • 更易于维护:cava实现的排序插件比表达式更具有可读性,更易于维护

  • 更易于接受:cava的语法和java类似,熟悉java的同学很容易使用cava进行开发,学习成本较低

说明

注意:

Cava插件仅支持独享型应用配置

Cava插件目前仅在业务排序中生效

Cava语法可在产品文档中 开发指南—>排序插件Cava 模块下查看

流程演示

1.创建策略:在“策略管理”页点击“创建”,“应用范围”选择“业务排序”,“类型”选择“cava脚本”1

2.添加脚本文件:添加脚本文件,编辑cava脚本;也可本地上传脚本文件,支持json格式文件;单个脚本文件最大为10K;单个脚本文件最多5个脚本文件2

3.编译并发布脚本:脚本文件编辑完成后,点击“编辑”可对所有脚本文件进行编译,并在下方展示编译状态;编译通过后,点击发布即可发布当前脚本;脚本发布后不可重新编辑3

4.查看排序效果:在搜索测试中输入设置参数second_rank_name=“策略名称”,second_rank_type=cava_script4

注意事项

  • Cava插件目前仅支持独享型应用配置

  • Cava脚本单文件大小限制为10K,单个脚本最多5个脚本文件,单个应用最多支持50个cava脚本

  • Cava脚本发布后不可编辑,如需修改可在策略管理页复制创建cava脚本类策略

SDK调用

java sdk

...
// 创建参数对象
SearchParams searchParams = new SearchParams(config);
...

//创建rank对象
Rank rank=new Rank();
//设置调用的CAVA脚本
rank.setSecondRankName("cava脚本名称");
//设置排序类型 - CAVA 脚本
rank.setSecondRankType(RankType.CAVA_SCRIPT);
//将排序策略加入到参数对象中
searchParams.setRank(rank);