検索ウィジェットは、ウェブ アプリケーション用のカスタマイズ可能な検索インターフェースを提供します。 実装に必要な HTML と JavaScript は最小限で、ファセットやページ分割などの一般的な機能をサポートしています。CSS と JavaScript を使用してインターフェースをカスタマイズすることもできます。
より柔軟な対応が必要な場合は、Query API を使用してください。 Query API を使用して検索インターフェースを作成するをご覧ください。
検索インターフェースを作成する
検索インターフェースを作成するには、次の手順を行います。
- 検索アプリケーションを構成する。
- アプリケーションのクライアント ID を生成する。
- 検索ボックスと結果用の HTML マークアップを追加する。
- ページにウィジェットを読み込む。
- ウィジェットを初期化する。
検索アプリケーションを構成する
各検索インターフェースには、管理コンソールで定義された検索アプリケーションが必要です。 アプリケーションは、データソース、ファセット、検索品質パラメータなどのクエリ設定を提供します。
検索アプリケーションを作成するには、 Cloud Search でカスタム検索を行えるようにするをご覧ください。
アプリケーションのクライアント ID を生成する
Cloud Search API へのアクセスを構成するの手順に加えて、 ウェブ アプリケーションのクライアント ID を生成します。
プロジェクトを構成する際は、次の点に注意してください。
- クライアント タイプとして [ウェブブラウザ] を選択します。
- アプリの生成元 URIを 指定します。
- クライアント ID をメモします。ウィジェットにはクライアント シークレットは必要ありません。
詳細については、クライアントサイド ウェブ アプリケーションの OAuth 2.0 をご覧ください。
HTML マークアップを追加する
ウィジェットには次の HTML 要素が必要です。
- 検索ボックスの
input要素。 - 候補ダイアログを固定するための要素。
- 検索結果の要素。
- (省略可)ファセット コントロールの要素。
次のスニペットは、id 属性で識別される要素を示しています。
ウィジェットを読み込む
<script> タグを使用してローダーを含めます。
onload コールバックを指定します。ローダーの準備ができたら、
gapi.load()
を呼び出して API クライアント、Google ログイン、Cloud Search
の各モジュールを読み込みます。
ウィジェットを初期化する
クライアント ライブラリを初期化するには、クライアント ID と https://www.googleapis.com/auth/cloud_search.query スコープを使用して gapi.client.init() または gapi.auth2.init() を使用します。ビルダー クラスを使用して、ウィジェットを構成してバインドします。
初期化の例:
構成変数:
ログイン エクスペリエンスをカスタマイズする
ユーザーが入力を開始すると、ウィジェットはログインを求めるメッセージを表示します。ウェブサイト用の Google ログインを使用すると、カスタマイズされた エクスペリエンスを提供できます。
ユーザーを直接承認する
ログイン状態をモニタリングして管理するには、「Google でログイン」を使用します。
この例では、ボタンクリック時に GoogleAuth.signIn() を使用します。
ユーザーを自動的にログインさせる
ログインを効率化するには、組織内のユーザーに対してアプリケーションを事前承認します。これは、Cloud Identity Aware Proxy でも役立ちます。IT アプリで Google ログインを使用する をご覧ください。
インターフェースをカスタマイズする
ウィジェットの外観は、次の方法で変更できます。
- CSS でスタイルをオーバーライドする。
- アダプタで要素を修飾する。
- アダプタを使用してカスタム要素を作成する。
CSS でスタイルをオーバーライドする
ウィジェットには独自の CSS が含まれています。オーバーライドするには、祖先セレクタを使用して特異性を高めます。
#suggestions_anchor .cloudsearch_suggestion_container {
font-size: 14px;
}
サポートされている CSS クラスのリファレンスをご覧ください。
アダプタで要素を修飾する
レンダリング前に要素を変更するアダプタを作成して登録します。この例では、カスタム CSS クラスを追加します。
初期化時にアダプタを登録します。
アダプタを使用してカスタム要素を作成する
createSuggestionElement、createFacetResultElement、createSearchResultElement を実装して、カスタム UI コンポーネントを作成します。この例では、
HTML <template> タグを使用します。
アダプタを登録します。
カスタム ファセット要素は、次のルールに従う必要があります。
- クリック可能な要素に
cloudsearch_facet_bucket_clickableを追加します。 - 各バケットを
cloudsearch_facet_bucket_containerでラップします。 - レスポンスのバケットの順序を維持します。
たとえば、次のスニペットは、チェックボックスの代わりにリンクを使用してファセットをレンダリングします。
検索行動をカスタマイズする
アダプタでリクエストをインターセプトして、検索アプリケーションの設定をオーバーライドします。
実行前にリクエストを変更するには、interceptSearchRequest を実装します。この例では、クエリを選択したソースに限定します。
アダプタを登録します。
次の HTML は、ソースでフィルタリングするために選択ボックスを表示する目的で使用されます。
次のコードは、変更をリッスンし、選択を設定し、必要に応じてクエリを再実行します。
アダプタに
interceptSearchResponse
を実装して、検索レスポンスをインターセプトすることもできます。
バージョンを固定する
- API バージョン: 初期化する前に
cloudsearch.config/apiVersionを設定します。 - ウィジェットのバージョン:
gapi.config.update('cloudsearch.config/clientVersion', 1.1)を使用します。
設定しない場合、デフォルトは 1.0 です。
たとえば、ウィジェットをバージョン 1.1 に固定するには、次のようにします。
検索インターフェースを保護する
ウェブ アプリケーションのセキュリティに関するベスト プラクティスに沿って、特に クリックジャッキングを防ぐようにしてください。
デバッグを有効にする
デバッグを有効にするには、
interceptSearchRequest
を使用します。
if (!request.requestOptions) {
request.requestOptions = {};
}
request.requestOptions.debugOptions = {enableDebugging: true};
return request;