ドロップダウン候補機能は、OpenSearchの基本機能です。この機能は、検索クエリを入力するときに選択できる推奨検索クエリを提供します。検索クエリの全内容を入力する前に、期待する検索クエリが見つかる場合があります。これにより、期待する検索結果をできるだけ早く取得できます。
概要
ドロップダウン候補機能は、OpenSearchの基本機能です。この機能は、検索クエリを入力するときに選択できる推奨検索クエリを提供します。検索クエリの全内容を入力する前に、期待する検索クエリが見つかる場合があります。これにより、期待する検索結果をできるだけ早く取得できます。
OpenSearchは、ドキュメントから検索クエリをインテリジェントに抽出して、ドロップダウン候補機能を実装します。中国語で検索クエリを入力すると、OpenSearchは中国語フレーズの最初の数文字、完全なピンインスペル、ピンインの頭文字、漢字とピンイン、分析後の最初の数文字、および中国語の同音異義語に基づいて候補を提供します。
たとえば、次の内容を入力すると、検索クエリ连衣裙长款が推奨されます。
中国語フレーズの最初の数文字:
连 and 连衣
完全なピンインスペルの最初の数文字:
l, li, lian, lianyi, and lianyiqun
ピンインの頭文字の最初の数文字:
l, ly, and lyq
漢字とピンイン:
连yi, and 连衣qun
分析後の最初の数文字:
长款, 长款连衣, and 连衣长
中国語の同音異義語:
连衣群 and 联谊群
介入エントリを使用して、ドロップダウン候補に介入することもできます。OpenSearchは、ドロップダウン候補の複数のメトリックを提供します。詳細については、ドロップダウン候補レポートを参照してください。
使用上の注意
データソース
アプリケーションのドキュメントは、ドロップダウン候補のデータソースとして機能します。アプリケーションから最大3つのフィールドを、各ドロップダウン候補モデルのデータソースとして選択できます。ドロップダウン候補を提供するために、OpenSearchはアプリケーションから数百万のドキュメントを選択し、指定されたルールに基づいてこれらのドキュメントで選択されたフィールドの値を処理して、推奨検索クエリを生成します。次に、OpenSearchは、指定されたルールに基づいて、ドロップダウン候補にいくつかの推奨検索クエリのみを表示します。
推奨検索クエリの生成ルール
OpenSearchは、指定された条件に基づいて、過去N日以内の履歴検索クエリから推奨検索クエリを生成します。たとえば、条件は、履歴検索クエリの用語の重み、取得されたドキュメントの数、または検索回数、あるいは過去1日以内に履歴検索クエリの検索結果が返されたかどうかです。デフォルトでは、過去7日間の履歴検索クエリを使用して、推奨検索クエリが生成されます。推奨検索クエリを生成するために、OpenSearchは履歴検索クエリから用語を抽出するか、元の履歴検索クエリを使用します。
履歴検索クエリから用語を抽出: OpenSearchは、アリババクラウドの自然言語処理(NLP)チームによってトレーニングされたアナライザーを使用して、検索クエリを分析します。このアナライザーは、大量の自然言語データに基づいて開発されています。分析後、OpenSearchは実際に意味を持つ用語を組み合わせて、推奨検索クエリを生成します。これにより、推奨検索クエリに基づいて必要なドキュメントを取得できます。
元の履歴検索クエリを使用: OpenSearchは、変更せずに元の履歴検索クエリをドロップダウン候補の推奨検索クエリとして選択します。履歴検索クエリに30文字を超える文字が含まれている場合、OpenSearchは最初の30文字のみを保持することで検索クエリを切り捨て、切り捨てられた検索クエリを推奨検索クエリとして使用します。この方法は、店舗名、ユーザー名、曲名など、分析を必要としないアプリケーションフィールドに適用されます。この方法は、変更せずに推奨検索クエリとして使用したいカスタム検索クエリにも適用されます。短く、簡潔で、明示的なフィールドを選択することをお勧めします。
注:
推奨検索クエリは、過去N日間(デフォルトでは7日間)のraw_queryパラメータを含む検索リクエストから抽出されます。
手動介入
次の方法でドロップダウン候補に介入できます。
ホワイトリストとブラックリストを使用して推奨検索クエリに介入します。
データソースからドキュメントをフィルタリングします。フィルタ条件を設定した後、OpenSearchは条件を満たすアプリケーションドキュメントのみに基づいて推奨検索クエリを生成します。
パラメータ | 説明 |
フィルタ条件 | OpenSearchアプリケーションスキーマのフィールドに基づいてフィルタ条件を設定する必要があります。設定されたフィルタ条件は、現在のアプリケーションのすべてのドキュメントをフィルタリングするために使用されます。次の項目に注意してください。
例: フィルタ条件「status=1,level=1」が設定されている場合、条件を満たすドキュメントのみをデータソースとして使用できます。 |
次の図は、OpenSearchコンソールでフィルタ条件を設定する方法を示しています。
推奨検索クエリへの介入
ブラックリスト: 推奨検索クエリにブラックリストのキーワードが含まれている場合、推奨検索クエリはドロップダウン候補に表示されません。推奨検索クエリがビジネスに適用できない場合は、関連するキーワードをブラックリストに追加できます。このように、キーワードを含むすべての推奨検索クエリはドロップダウン候補に表示されません。
ホワイトリスト: ホワイトリストの検索クエリが指定された推奨条件を満たしている場合、その検索クエリはドロップダウン候補の最上位にランクされます。ビジネスに適用可能な推奨検索クエリのランクが低い場合、またはドロップダウン候補に含まれていない場合は、検索クエリをホワイトリストに追加できます。これにより、ドロップダウン候補の品質が向上します。ホワイトリストとブラックリストの設定方法の詳細については、ブラックリストとホワイトリストを参照してください。
標準アプリケーションはドロップダウン候補をサポートしていません。この機能は、高度なアプリケーションでのみサポートされています。
アプリケーションごとに最大10個のドロップダウン候補モデルを作成できます。
同じアリババクラウドアカウントに属するモデルの名前(ドロップダウン候補モデル、人気モデル、カテゴリ予測モデル、トップ検索モデル、ヒントモデルを含む)は一意である必要があります。
アプリケーションでインデックスフィールドとして設定されているTEXT、SHORT_TEXT、LITERAL、およびINTタイプのフィールドのみをデータソースとして使用できます。
モデルをトレーニングするために最大3つのフィールドを選択できます。
アプリケーションスキーマを変更する場合、ドロップダウン候補のデータソースとして使用されているアプリケーションフィールドは変更できません。
ドロップダウン候補モデルをトレーニングする場合、使用するアプリケーションテーブルには、raw_queryパラメータで指定された検索クエリとアプリケーションに保存されているデータを含む1,000を超えるデータエントリが含まれている必要があります。そうでない場合、データの整合性の問題により、モデルのトレーニングが失敗する可能性があります。
アプリケーションを削除すると、アプリケーションのドロップダウン候補モデルも削除されます。
ドロップダウン候補に基づく検索リクエストでは、queryパラメータの値はUTF-8形式である必要があり、30バイトまたは10文字を超えることはできません。そうでない場合、エラーが発生し、データは返されません。
ドロップダウン候補に基づく検索リクエストでは、hitパラメータの値は0より大きく10以下の整数である必要があります。そうでない場合、このパラメータの値は10に修正され、エラーが発生します。たとえば、hitパラメータが0、-1、または11に設定されている場合、リクエストはhitパラメータが10に設定されているリクエストと同じ方法で処理されますが、エラーが報告される点が異なります。
ブラックリストには最大500個のキーワードを含めることができます。
ホワイトリストには最大500個の検索クエリを含めることができます。
ホワイトリストの検索クエリにブラックリストのキーワードが含まれている場合、ブラックリストが優先され、検索クエリはドロップダウン候補に表示されません。
ブラックリストとホワイトリストの変更はリアルタイムで有効になります。
ドロップダウン候補モデルが作成されると、システムはデフォルトでモデルのスケジュールされたトレーニングを有効にします。モデルのデータは、トレーニング後に定期的に更新されます。
ドロップダウン候補モデルのトレーニング時間は、アプリケーションデータのサイズとシステム負荷によって異なります。トレーニング時間が30分を超える場合は、OpenSearchチームに連絡してください。
デフォルトでは、OpenSearchは検索クエリの用語を中国語の同音異義語に置き換えることによってもドキュメントを取得します。この機能を無効にするには、検索リクエストで
re_search
パラメータをdisableに設定します。ドロップダウン候補機能は無料です。OpenSearchは、コンピューティングリソースとストレージリソースの固定クォータを提供します。ドロップダウン候補モデルごとに、OpenSearchは最大100クエリ/秒(QPS)をサポートするコンピューティングリソースと最大200万件の推奨検索クエリをサポートするストレージリソースを提供します。
OpenSearchが入力した元の検索クエリを認識できるように、検索リクエストでraw_queryパラメータを指定することをお勧めします。詳細については、検索リクエストの開始を参照してください。
履歴検索クエリ機能を有効にすると、各モデルのトレーニングの課金対象時間に基づいてトレーニング料金が課金されます。詳細については、課金概要を参照してください。
raw_query、user_id、およびfrom_request_idパラメータの詳細については、検索リクエストの開始を参照してください。
高頻度検索クエリ機能をデフォルトで有効にするには、検索リクエストにraw_queryパラメータを含めるか、クエリ句にデフォルトインデックスを含める必要があります。
独立したraw_query: モデルのトレーニングのパフォーマンスを向上させるには、検索リクエストでraw_queryパラメータを指定する必要があります。指定された検索クエリは、ドキュメントの取得に使用できる独立した一意の検索クエリである必要があります。
ヒント
ドロップダウン候補を最適化するには、ドロップダウン候補リクエストを検索リクエストに関連付けることをお勧めします。これにより、推奨検索クエリの数とクリック率が増加します。詳細については、このトピックの「ドロップダウン候補リクエストを検索リクエストに関連付ける」セクションを参照してください。
ドキュメントのトピックに関連する簡潔なフィールドを選択します。
要件に基づいて、履歴検索クエリから用語を抽出するか、変更せずに元の履歴検索クエリを使用します。
ドロップダウン候補に基づく検索リクエストへの応答では、suggestionsパラメータには推奨検索クエリが含まれています。errorsパラメータは、エラーが発生したかどうかを示します。suggestionsパラメータには、errorsパラメータが返された場合でもデータが含まれている場合があります。suggestionsパラメータで推奨検索クエリが返された場合、これらの検索クエリはドロップダウン候補に表示されます。
手順
1. OpenSearchコンソールにログオンします。左側のナビゲーションペインで、[検索アルゴリズムセンター] > [検索ガイダンス] を選択します。[ドロップダウン候補] ページで、[作成] をクリックします。
2. [ドロップダウン候補モデルの作成] ページで、モデル名を入力し、トレーニングフィールドを選択し、各フィールドの抽出方法を選択し、必要に応じて[履歴検索クエリ] をオンにし、必要に応じてフィルタ条件を入力して、[送信] をクリックします。
3. [ドロップダウン候補] ページで、作成されたドロップダウン候補モデルを見つけ、[アクション] 列の[トレーニング] をクリックしてモデルをトレーニングします。
4. トレーニングが完了するまで待ちます。トレーニングは20〜30分かかります。
5. ドロップダウン候補モデルをテストします。次の図は、抽出方法として[元の値を保持] または[元の値から抽出] を選択した場合の推奨検索クエリを示しています。
元の値を保持
元の値から抽出
6. このトピックの次の部分のデモで説明されているように、OpenSearchコンソールで推奨検索クエリを取得します。関連するAPI操作の詳細については、ドロップダウン候補のクエリを参照してください。
詳細ページ
ドロップダウン候補ページ
OpenSearchコンソールで、左側のナビゲーションペインの[検索アルゴリズムセンター] > [検索ガイダンス] を選択します。次に、次の図に示すように、[ドロップダウン候補] ページが表示されます。
[ドロップダウン候補] ページでは、各ドロップダウン候補モデルの名前、作成時刻、ステータス、および最新バージョンのステータスを表示できます。最新バージョンのステータスには、[トレーニング待機中]、[トレーニング中]、[トレーニング済みおよび合格]、および[異常データ] が含まれます。[アクション] 列で、モデルの詳細の表示、モデルのトレーニング、およびモデルの削除を行うことができます。
ドロップダウン候補モデルの詳細ページ
基本情報: このセクションでは、ドロップダウン候補モデルの作成時刻、ステータス、最新のトレーニング時刻、および最新バージョンのステータスを表示できます。モデルが[異常データ] 状態の場合、このページで例外レポートを表示できます。
構成情報: このセクションでは、ドロップダウン候補モデルに設定されているトレーニングフィールド、フィルタ条件、ホワイトリスト、ブラックリスト、およびスケジュールされたトレーニングと履歴検索クエリ機能が有効になっているかどうかを表示できます。
データ検証: このセクションでは、モデルのデータの整合性と整合性レベルを表示できます。
トレーニング履歴: このセクションでは、モデルのトレーニングレコードを表示できます。
コアメトリックデータ
OpenSearchは、ドロップダウン候補モデルの主要なメトリックを表と折れ線グラフに表示します。時間範囲でメトリックをフィルタリングできます。
注: メトリックの詳細については、ドロップダウン候補レポートを参照してください。
SDKのデモ
APIリクエスト:
GET v3/openapi/suggestions/{suggestion_name}/actions/search?hit=10&query={your_query}&re_search=homonym&user_id=xxx
Java用SDKのMaven依存関係:
<dependency>
<groupId>com.aliyun.opensearch</groupId>
<artifactId>aliyun-sdk-opensearch</artifactId>
<version>4.0.0</version>
</dependency>
詳細については、リリースノートを参照してください。
デモコード:
package com.example.opensearch;
import com.aliyun.opensearch.OpenSearchClient;
import com.aliyun.opensearch.SuggestionClient;
import com.aliyun.opensearch.sdk.generated.OpenSearch;
import com.aliyun.opensearch.sdk.generated.commons.OpenSearchClientException;
import com.aliyun.opensearch.sdk.generated.commons.OpenSearchException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.nio.charset.Charset;
public class SuggestDemo {
static private final String accesskey = "アリババクラウドアカウントのAccessKey ID"; // アリババクラウドアカウントのAccessKey ID
static private final String secret = "アリババクラウドアカウントのAccessKeyシークレット"; // アリババクラウドアカウントのAccessKey Secret
static private final String host = "ドロップダウン候補モデルを呼び出したいアプリケーションのリージョンのOpenSearch APIのエンドポイント"; // ドロップダウン候補モデルを呼び出したいアプリケーションのリージョンのOpenSearch APIのエンドポイント
OpenSearch openSearch;
OpenSearchClient openSearchClient;
static private final byte hits = 8; // ドロップダウン候補の推奨検索クエリの最大数。
static private final String suggestionName = "ドロップダウン候補モデルの名前"; // ドロップダウン候補モデルの名前。
@Before
public void setUp() {
// OpenSearchオブジェクトを作成します。
openSearch = new OpenSearch(accesskey, secret, host);
openSearchClient = new OpenSearchClient(openSearch);
}
@Test
public void TestEnv() {
// ファイルのエンコーディング形式とデフォルトのエンコーディング形式を取得します。
System.out.println(String.format("file.encoding: %s", System.getProperty("file.encoding")));
System.out.println(String.format("defaultCharset: %s", Charset.defaultCharset().name()));
// ドロップダウン候補オブジェクトを作成します。
SuggestionClient suggestionClient = new SuggestionClient(suggestionName, openSearchClient);
String query = "検索クエリ";
try {
SuggestParams suggestParams = new SuggestParams();
suggestParams.setQuery(query); // 検索クエリ。
suggestParams.setHits(10); // ドロップダウン候補の推奨検索クエリの最大数。
suggestParams.setUserId("12345678"); // ユーザーID。
// デフォルトでは、OpenSearchは検索クエリの用語を中国語の同音異義語に置き換えることによってもドキュメントを取得します。リクエストでre_searchパラメータを設定することで、この機能を設定できます。
// このパラメータをReSearch.findByValue(1)に設定すると、この機能は無効になります。このパラメータをReSearch.findByValue(0)に設定するか、このパラメータを指定しないと、この機能は無効になります。
suggestParams.setReSearch(ReSearch.findByValue(1));
SearchResult result = suggestionClient.execute(suggestParams);
System.out.println(result); // 取得結果を表示します。
} catch (OpenSearchException e) {
e.printStackTrace();
} catch (OpenSearchClientException e) {
e.printStackTrace();
}
}
@After
public void clean() {
openSearch.clear();
}
}
Java用SDKを使用してドロップダウン候補を実装する方法の詳細については、ドロップダウン候補モデルを呼び出すためのデモコードを参照してください。
取得データのサンプル:
{
"request_id": "159851481919726888064081",
"searchtime": 0.006246,
"suggestions": [
{
"suggestion": "skirt fashion"
},
{
"suggestion": "skirt shorty dress"
},
{
"suggestion": "skirt dotted dress"
},
{
"suggestion": "skirt young"
},
{
"suggestion": "skirt dotted"
},
{
"suggestion": "skirt shorty"
},
{
"suggestion": "skirt shorty dotted"
}
]
}
注: 取得データとともに返されるリクエストIDは、検索リクエストの関連付けに使用できます。
ドロップダウン候補リクエストを検索リクエストに関連付ける
ドロップダウン候補リクエストと検索リクエストの関連付けには、次の利点があります。
ドロップダウン候補機能が検索結果をどの程度最適化するかを評価するためのメトリックデータを取得できます。たとえば、ドロップダウン候補に基づいて取得された検索結果のページビュー(PV)とクリック率、および結果がほとんどまたはまったくない検索エンジン結果ページ(SERP)の比率などのメトリックデータを取得できます。詳細については、ドロップダウン候補レポートを参照してください。
ドロップダウン候補リクエストを検索リクエストに関連付けると、クリックデータなどのメトリックデータを取得できます。このようなデータに基づいて関連するドロップダウン候補モデルを最適化し、検索パフォーマンスを向上させることができます。
関連付け方法:
OpenSearchアプリケーションの検索リクエストがドロップダウン候補に基づいている場合、リクエストに
from_request_id={from_request_id}
を含める必要があります。from_request_id変数は、現在の検索クエリのソースを指定します。検索クエリがドロップダウン候補、トップ検索、またはヒント機能によって推奨されている場合、from_request_idパラメータを機能リクエストのIDに設定します。機能リクエストを現在の検索リクエストに関連付けると、機能のメトリックを取得して検索パフォーマンスを評価および向上させることができます。from_request_idパラメータの詳細については、検索リクエストの開始を参照してください。
例:
ドロップダウン候補操作によって返されるリクエストIDは159851481919726888064081です。次のコードは、リクエストIDを検索リクエストに関連付ける方法の例を示しています。
SearchParams searchParams = new SearchParams(config);
searchParams.setQuery("title:'skirt shorty'"); // 検索クエリはドロップダウン候補機能によって推奨されています。
// from_request_idパラメータを追加します。
Map<String, String> customParam =new HashMap<>();
customParam.put("from_request_id","159851481919726888064081");
searchParams.setCustomParam(customParam);
// クエリを実行し、SearchResultオブジェクトの形式で結果を返します。
SearchResult execute = searcherClient.execute(searchParams);
// SearchResultオブジェクトを文字列に変換し、文字列を返します。
String result = execute.getResult();
System.out.println(result);