制御された実験なしでは、クエリ分析やランキング変更が検索品質を向上させるのか、それとも低下させるのかを判断することはできません。A/B テストを使用すると、ライブ検索トラフィックの一部をテスト構成 (異なるクエリ分析ルール、基本ソート、または高度ソート) にルーティングし、変更を適用する前にメトリックをベースラインと比較できます。これにより、テストされていない構成がユーザーの検索エクスペリエンスを低下させるのを防ぎます。
仕組み
検索クエリをテストグループに割り当てるには、abtest パラメーターを指定してクエリを送信します。バックエンドは flow_divider の値をハッシュ化し、クエリを一貫してルーティングします。つまり、同じ flow_divider の値は常に同じテストにマッピングされます。この一貫性は不可欠です。ユーザーがクエリごとに異なるテストグループに割り当てられた場合、結果は構成変更の実際の影響ではなく、ノイズを反映することになります。flow_divider をユーザーのメンバー ID に設定することで、同じユーザーが実験期間中常に同じテストグループに割り当てられるようにします。
abtest パラメーターを省略したすべてのクエリは、引き続きデフォルトのオンライン構成を使用します。
テスト可能な項目
テストグループ内の各テストは、次のコンポーネントの 1 つ以上をカバーできます。
| コンポーネント | 説明 |
|---|---|
| クエリ分析 | 受信検索クエリに適用されるクエリ解析および分析ルール |
| 大まかなソート | 候補結果の取得に使用される第 1 段階のランキングポリシー |
| 高度ソート | 候補結果に適用される第 2 段階の再ランキングポリシー |
| カテゴリ予測 | プロダクトカテゴリの予測に使用されるモデル |
前提条件
開始する前に、以下を確認してください。
少なくとも 1 つの公開済みのクエリ分析ルール、基本ソート、または高度ソート構成を持つ OpenSearch アプリケーション
(推奨) アプリケーションで データ収集 V2.0 が有効になっていること。クリック行動データにより、テストメトリックの品質が向上します
A/B テストの作成と実行
ステップ 1: テストグループの作成
OpenSearch コンソールにログインします。左側のナビゲーションウィンドウで、[機能拡張] > [A/B テスト] の順に選択します。
A/B テストページで、[作成] をクリックします。

[テスト グループ名] を入力してください。この名前は表示用のみです。実験を明確に識別できるものを選択してください。名前の長さは30文字を超えてはいけません。

[次へ] をクリックして、テストの設定 ステップに進みます。
ステップ 2: テストグループへのテストの追加
各テストグループには最大 20 個のテストを含めることができ、同時にオンラインで実行できるのは最大 10 個です。
[テストの作成] をクリックします。

テスト名を入力します。名前は 30 文字を超えることはできません。

テストのクエリ分析、基本ソート、および高度ソートを設定します。公開済みの構成のみ選択可能です。編集中である構成は、意図しない変更がテスト結果に影響を与えるのを防ぐために除外されます。ソートポリシーを選択した後、それを変更することはできません。
「クエリ分析タイプとルール」列で、「カスタム」を選択して作成したルールを使用するか、または「デフォルトのオンライン設定を使用」を選択して現在の本番ルールを使用します。
基本ソートおよび高度ソートについても、[並べ替えポリシータイプとポリシー] 列で同じオプションが適用されます。

このテストのトラフィック割合を設定します。最小値は 1% です。グループ内のすべてのアクティブなテストの合計トラフィック割合は 100% を超えることはできません。

必要に応じて、追加のテストを作成するために繰り返します。
ステップ 3: テストの完了と開始
「次へ」をクリックします。「完了」ステップで「テストグループが作成されました」と確認された場合、「完了」をクリックして A/B テストページに戻ります。新しいテストグループは、一覧にPendingのステータスで表示されます。


テストグループの [操作] 列で、[テストを開始] をクリックします。ステータスが テスト中 に変わります。

ステップ 4: 検索クエリへの abtest パラメーターの追加
テストグループが実行中になったら、実験を通してルーティングしたい検索クエリに abtest パラメーターを含めます。
/v3/openapi/apps/160029126/search?query=query=default:'Shenzhen'&&config=start:0,hit:10,format:fulljson&abtest=scene_tag:test_1,flow_divider:123456abtest パラメーターは 2 つのサブパラメーターを取ります。
| サブパラメーター | 必須 | 説明 |
|---|---|---|
scene_tag | はい | OpenSearch コンソールに入力されたテストグループの名前 |
flow_divider | はい | バックエンドがクエリを特定のテストに割り当てるためにハッシュ化する値。同じユーザーがすべてのクエリで常に同じテストグループに割り当てられるように、これをユーザーのメンバー ID に設定します。 |
エンコード要件:
SDK:
scene_tagまたはflow_dividerにスペースまたは句読点が含まれている場合は、SDK メソッドを呼び出す前に値を URL エンコードしてください。スペースや句読点を含まない値はそのまま渡すことができます。API: 両方のサブパラメーターの値を常に URL エンコードしてください。パラメーターはこの形式で渡します。
abtest=urlencode(scene_tag:urlencode($scene),flow_divider:urlencode($value))
詳細については、「A/B テストに関するよくある質問」をご参照ください。
テストグループとテストの管理
テストグループの管理
テストグループを作成した後、A/B Test ページから管理します。

| 操作 | 利用可能な条件 |
|---|---|
| テストの開始 | テストグループのステータスが 保留中 または 停止済み |
| テストの停止 | テストグループのステータスが テスト中 |
| テストグループの削除 | A/B テストページから利用可能 |
テストの管理
個々のテストを表示および管理するには、テストグループの [アクション] 列の [詳細] をクリックします。

「テストグループの詳細」ページの[テストリスト] セクションには、各テストの名前、クエリ分析のタイプとルール、ソートポリシーのタイプとポリシー、およびトラフィックの割合が表示されます。

テストごとの利用可能な操作:
[Edit]:名前、構成、またはトラフィック割合を更新します。
[Delete]:テストを削除します。その構成は破棄され、すぐにオンラインでの効果が停止します。
[Configure whitelist]:特定の
flow_divider値をテストに追加し、その値からのクエリが常にこのテストにルーティングされるようにします。これにより、テストの検索効果を表示できます。
テスト結果の表示
テストグループの詳細
「[詳細]」を「[操作]」列でクリックして、テストグループの詳細ページを開きます。ここでは、以下を確認できます:
行動データステータス — メトリックに供給される行動データの品質:
ステータス 説明 未アクティブ化 アプリケーションの行動データがアップロードされていません。詳細については、「データ収集 V2.0」をご参照ください。 データなしでアクティブ化済み データ収集は有効になっていますが、まだデータが受信されていません。 異常 (利用不可) 行動データが品質チェックに失敗し、信頼できません。 テストグループステータス — 実験の現在の状態:
ステータス 説明 Pending テストグループのテストは開始または停止できます。 Testing テストが実行中です。開始日からの経過日数が表示されます。 Stopped テストが停止しています。累積テスト時間は、実際にテストが実行されていた日数のみをカウントします。
データ統計
テストグループの詳細ページの[データ統計]セクションで、テスト間でメトリックを比較します。または、左側のナビゲーションウィンドウで[レポート統計] > [A/B テスト]に移動します。
メトリックはテスト開始の翌日 (08:00 以降に表示可能) に利用可能になります。テストを停止した場合でも、それまでに収集されたデータは翌日も利用可能です。
結論を出す前に、少なくとも数日間は待ってください。初期のデータは、サンプルサイズが小さいことや曜日効果により不安定になる可能性があります。変更が一貫して優れているかどうかを判断するには、最新の値だけでなく、時間の経過に伴うメトリックの傾向を使用してください。
「メトリックの種類」ドロップダウンリストから表示するメトリックを選択します。「テスト」ドロップダウンリストから比較対象のテストを複数選択します。コアメトリックは折れ線グラフで表示され、デフォルトでは直近1日のデータが表示されます。
利用可能なメトリック:
| メトリック | 測定対象 |
|---|---|
| ページビュー (PV) | 表示された検索結果ページの合計数 |
| ユーザービュー (UV) | 検索を実行したユニークユーザー数 |
| ゼロ結果率 | 結果を返さなかったクエリの割合 |
| ユーザーあたりの平均 PV | ユーザーあたりの平均表示ページ数 |
| 曝露時間 | 表示された検索結果の合計数 |
| 検索クエリ | 実行された検索の合計数 |
| ユーザーあたりの平均検索クエリ数 | ユーザーあたりの平均検索数 |
完全なメトリックの定義および A/B テスト レポートについては、「A/B テスト レポート」をご参照ください。
実践例
この例では、Eコマースプロダクト検索のソート式で A/B テストを実行する方法を示します。
シナリオ:ご利用のアプリケーションは、次の 2 種類のトラフィックを処理します。
ユーザー検索トラフィック — キーワードで検索するユーザーからのクエリで、価格でソートされます。
query=config=format:fulljson&&query=default:'infant formula'&&sort=price内部サービストラフィック — 内部サービスからのクエリで、タイムスタンプでソートされます。
query=config=format:fulljson&&query=cat_id:'1'|'2'|'3'&&sort=timestamp
メンバー ID を使用してユーザーを一貫して割り当てながら、ユーザー検索トラフィックのみで複数のソート式をテストしたいとします。
手順:
user_searchという名前のテストグループを作成します。
ユーザー検索クエリに
abtestパラメーターを追加し、scene_tagをuser_searchに、flow_dividerをユーザーのメンバー ID に設定します。Java SDK の使用 (PHP SDK の使用法も同様):ダウンロード:aliyun-sdk-opensearch-3.4.1 (Java) および opensearch-sdk-php-3.3.0 (PHP) API の使用:scene_tagとflow_dividerの値を個別に URL エンコードし、その後、完全なパラメーター値を URL エンコードします。クエリを構築します (scene_tagとflow_dividerの値は URL エンコードされています)。query=config=format:fulljson&&query=default:'infant formula'&&sort=-price&abtest=scene_tag:user_search,flow_divider:%e5%bc%a0%e4%b8%89次に、完全なクエリパラメーター値を URL エンコードします。
query=config%3dformat%3afulljson&&query%3ddefault%3a%27%e5%ae%9d%e5%ae%9d%e5%a5%b6%e7%b2%8
テストグループを開始します。ユーザーからの検索クエリは、メンバー ID に基づいて構成されたテストにルーティングされます。
ビジネス運用レポート
A/B テストレポートを表示するには、左側のナビゲーションウィンドウで [機能拡張] > [A/B テスト] に移動し、テストを見つけ、[操作] 列の [統計レポート] をクリックします。

または、左側のナビゲーションウィンドウで、[レポート統計] > [A/Bテストレポート] に移動します。

レポートで利用可能なメトリックの完全な説明については、「A/B テスト レポート」をご参照ください。