すべてのプロダクト
Search
ドキュメントセンター

OpenSearch:Cava を使用したソートプラグインの開発

最終更新日:Apr 02, 2026

Cava は、OpenSearch エンジンチームが低レベル仮想マシン (LLVM) プロジェクトをベースに開発したプログラミング言語です。Java に似た構文を使用し、オブジェクト指向設計、Just-In-Time (JIT) コンパイル、組み込みのセキュリティチェックにより、C++ レベルのパフォーマンスを実現します。

Cava を使用して、OpenSearch の高度なソート用のカスタムソートプラグインを作成します。OpenSearch の式と比較して、Cava ソートプラグインには次の特徴があります。

ディメンションCava ソートプラグイン
構文の特徴for ループ、関数定義、クラス定義限定された演算子とビルトイン関数
カスタマイズコードによるビジネスロジックの完全な実装式の文法による制約
保守性可読性が高く構造化されたコードコンパクトだが、大規模になると可読性が低下
学習曲線Java 開発者にとって馴染みやすい式の構文を学習する必要がある
重要

Cava ベースのソートプラグインは、専用アプリケーションでのみ機能し、高度なソートにのみ適用されます。Cava の構文の詳細については、『開発者ガイド』の Cava ベースのソートプラグインに関するトピックをご参照ください。

仕組み

Cava ソートポリシーには、ランキングロジックを実装する 1 つ以上の Cava スクリプトファイルが含まれます。ワークフローは以下の通りです。

  1. タイプが [Cava Script] で、範囲が [Fine Sort] のソートポリシーを作成します。

  2. コンソールでスクリプトファイルを追加・編集するか、JSON フォーマットでアップロードします。

  3. すべてのスクリプトファイルをコンパイルし、ポリシーを公開します。

  4. SDK または検索テストでポリシー名とタイプを参照します。

公開されると、Cava スクリプトは高度なソート中に実行され、ロジックに従ってドキュメントのスコアリングとランキングを行います。Cava は for ループ、関数定義、クラス定義などの構文機能をサポートしており、OpenSearch の式で許可されている範囲を超えて、ランキングロジックを完全に制御できます。

前提条件

開始する前に、以下をご確認ください。

  • OpenSearch の専用アプリケーションがあること

  • OpenSearch コンソールの [ポリシー管理] ページへのアクセス権があること

Cava ソートプラグインの作成とデプロイ

ステップ 1:ソートポリシーの作成

  1. [ポリシー管理] に移動し、[作成] をクリックします。

  2. [ポリシーの作成] ページで、[範囲][高度なソート] に、[タイプ][Cava スクリプト] に設定します。

image

ステップ 2:スクリプトファイルの追加

いずれかの方法でスクリプトファイルを追加します。

  • コンソールエディターで Cava スクリプトを直接編集します。

  • ローカルのスクリプトファイルを JSON フォーマットでアップロードします。

image

ステップ 3:コンパイルと公開

  1. [コンパイル] をクリックして、すべてのスクリプトファイルをコンパイルします。コンパイルステータスは [コンパイル] ボタンの下に表示されます。

  2. コンパイルが成功したら、[公開] をクリックします。

image
重要

公開されたスクリプトは変更できません。公開済みのポリシーを更新するには、[ポリシー管理] ページでポリシーを複製し、そのコピーを編集してください。

ステップ 4:ソートポリシーのテスト

ポリシーの [検索テスト] ページで、以下のパラメーターを設定します。

パラメーター
second_rank_nameソートポリシーの名前
second_rank_typecava_script
image

以下の Java の例は、SDK でこれらのパラメーターを設定する方法を示しています。

// SearchParams オブジェクトを作成します
SearchParams searchParams = new SearchParams(config);

// Cava ソートポリシーを設定します
Rank rank = new Rank();
rank.setSecondRankName("Cava script name");    // 公開されたソートポリシーの正確な名前
rank.setSecondRankType(RankType.CAVA_SCRIPT);  // 高度なソート中に Cava スクリプトを呼び出します

// rank 設定を検索リクエストにアタッチします
searchParams.setRank(rank);
説明

SDK で参照されるスクリプトは公開されている必要があります。未公開のスクリプトは、検索テストでのみ使用できます。

共通パラメーターの取得

ベクトルインデックスのスコア

ProximaScore を使用して、ベクトルインデックスから類似度スコアを取得します。ProximaScore.create() を呼び出して名前付きインデックスにバインドし、次に evaluate() を呼び出して各ドキュメントのスコアを取得します。

import com.aliyun.opensearch.cava.features.similarity.ProximaScore;

// ターゲットのベクトルインデックスにバインドします
ProximaScore _proximaScoreVector;
_proximaScoreVector = ProximaScore.create(params, "{{indexes.vector_index}}"); // ご利用のベクトルインデックス名に置き換えてください

// 現在のドキュメントの類似度スコアを取得します
float proximaScoreVector = _proximaScoreVector.evaluate(params);

制限事項

制限
最大スクリプトファイルサイズファイルあたり 10 KB
ソートポリシーあたりの最大スクリプトファイル数5
アプリケーションインスタンスあたりの最大 Cava ソートポリシー数50
公開後のスクリプトの変更サポートされていません — ポリシーを複製して変更を加えてください
SDK スクリプト使用前に公開する必要があります
未公開のスクリプト検索テストでのみ利用可能

次のステップ

  • Cava 言語の構文を学習する:『開発者ガイド』の Cava ベースのソートプラグインに関するトピックをご参照ください。