検索ウィジェットは、ウェブ アプリケーション用のカスタマイズ可能な検索インターフェースを提供します。実装に必要な HTML と JavaScript は最小限で、ファセットやページ分割などの一般的な機能をサポートしています。CSS や JavaScript を使用してインターフェースをカスタマイズすることもできます。
より柔軟な対応が必要な場合は、Query API を使用します。Query API を使用して検索インターフェースを作成するをご覧ください。
検索インターフェースを作成する
検索インターフェースを作成するには、次の手順が必要です。
- 検索アプリケーションを構成します。
- アプリケーションのクライアント ID を生成します。
- 検索ボックスと結果用の HTML マークアップを追加します。
- ページにウィジェットを読み込みます。
- ウィジェットを初期化します。
検索アプリケーションを構成する
各検索インターフェースには、管理コンソールで定義された検索アプリケーションが必要です。アプリケーションは、データソース、ファセット、検索品質パラメータなどのクエリ設定を提供します。
検索アプリケーションを作成するには、カスタム検索アプリケーションを作成するをご覧ください。
アプリケーションのクライアント 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;