2023年2月7日火曜日

検索にGoogle Custom Search APIを使用する

 APEX 22.2の検索コンポーネントをGoogle Custom Search APIと組み合わせて使用します。

以下のような検索ができるAPEXアプリケーションを作成します。

まずはGoogle側で準備作業を行います。

Google Cloudのプロジェクトを開き、APIとサービスの有効を呼び出します。


Custom Search APIを探します。


Custom Search APIが見つかるので、それを選択します。


Custom Search APIを有効にします。Custom Search APIは1日当たり100リクエストまでが無料枠で、それ以上は有料になります。(2023年2月7日現在)。料金についてはGoogleのサイトを確認してください。


Custom Search APIが有効になります。今回は認証情報としてAPIキーを使用します。APIキーの作成方法については、Google Blogger APIについて紹介しているこちらの記事を参照してください。


Custom Search APIで指定するプログラム可能な検索エンジンを追加します。コントロールパネルを開きます。

未作成であれば追加します。


名前などを設定し、検索エンジンを作成します。


検索エンジンが作成されます。

カスタマイズをクリックし、検索エンジンの概要を開きます。


検索エンジンIDをコピーします。


Google側の構成は以上です。

Oracle APEXの作業に移ります。

最初にWeb資格証明を作成します。

ワークスペース・ユーティリティWeb資格証明を開き、作成を開始します。

名前Google Custom Search API Keyとしました。静的識別子としてGOOGLE_SEARCH_API_KEYを割り当てています。GoogleのAPIキーなので、認証タイプURL問合せ文字列資格証明名key資格証明シークレットとしてGoogle側で発行したAPIキーを入力します。

URLに対して有効は、Custom Search APIのエンドポイントURLである、以下を指定します。

https://customsearch.googleapis.com/customsearch/v1

以上で作成をクリックし、Web資格証明を作成します。


アプリケーション作成ウィザードを起動し、空のアプリケーションを作成します。名前はGoogle Custom Searchとします。


Custom Search APIを呼び出すRESTデータ・ソースを作成します。

共有コンポーネントRESTデータ・ソースを開きます。


作成をクリックします。


RESTデータ・ソースの作成最初からを選びます。

へ進みます。


RESTデータ・ソース・タイプとして簡易HTTP名前Google Custom SearchURLエンドポイントとして、以下を指定します。検索エンジンIDは適切な値に置き換えます。APIの応答を解析するため、検索ワード必ず検索にヒットする単語を選びます

https://customsearch.googleapis.com/customsearch/v1?q=検索ワード&cx=検索エンジンID

Custom Search JSON APIのパラメータは以下に解説があります。必要であればパラメータを追加します。RESTデータ・ソースのパラメータとして認識されます。(後でも追加できます。)



ベースURLおよびサービスURLパスが認識されます。通常変更は不要なので、そのままへ進みます。


ページ区切りタイプページ区切りなしを選択します。

へ進みます。


認証が必要ですONにします。資格証明は作成済みのGoogle Custom Search API Keyを選択します。

以上で検出をクリックします。


検索結果が取得され、プレビューされます。

RESTデータ・ソースの作成をクリックします。


作成されたRESTデータ・ソースGoogle Custom Searchを開き、設定を確認します。


パラメータの設定を変更します。

cxを開きます。


パラメータ削除し(デフォルト値を削除)、詳細必須ONに変更します。

変更の適用をクリックします。


次にqを開きます。


cxと同じく、パラメータ削除詳細必須ONにします。さらに行検索で使用ONにします。行検索で使用をONにすることにより、このパラメータqは検索キーワードを指定するパラメータであると認識されます。

変更の適用をクリックします。


以上でRESTデータ・ソースの設定は完了です。

作成したRESTデータ・ソースを呼び出す検索構成を作成します。

共有コンポーネント構成の検索を開きます。


作成をクリックします。


名前Google Custom Searchとします。検索タイプ標準です。

へ進みます。


データ・ソースRESTデータ・ソースを選択し、RESTデータ・ソースとしてGoogle Custom Searchを選びます。

へ進みます。


主キー列LINK(Varchar2)タイトル列TITLE(Varchar2)説明列SNIPPET(Varchar2)とします。アイコン・ソースとしてアイコン・クラスを選択し、アイコンCSSクラスfa-file-searchを指定します。

以上で検索構成の作成をクリックします。


検索構成が作成されます。

ソースRESTソース・パラメータ名cx値タイプアイテムに変更し、としてG_ENGINE_IDを指定します。検索エンジンIDは、アプリケーション定義置換文字列として設定します。

RESTデータ・ソースのもうひとつのパラメータqは、行検索に使用がONであるため、用途が検索キーワードを渡すことに決まっています。そのため、パラメータとしてはリストされていません。

変更の適用をクリックします。


アプリケーション定義置換文字列としてG_ENGINE_IDを設定します。置換値検索エンジンIDです。


検索ページを作成します。

ページの作成を実行します。


検索ページを選択します。


ページ定義名前Google検索とします。ページ・モード標準です。構成の検索Google Custom Searchチェックを入れます。

ページの作成をクリックします。


検索ページが作成されます。

Google Custom Search APIは(無料枠を超えると)課金されるので、すぐにリージョン検索結果を選択し、属性入力時に検索OFFに変更します。


以上でアプリケーションは完成です。

ページを実行し検索キーワードを入力して検索すると、記事の先頭のGIF動画のように動作します。

検索結果の表示形式は色々とカスタマイズすることができます。こちらの記事でカスタマイズ方法を少し触れているので参考にしてください。

今回作成したAPEXアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/google-custom-search.zip

Oracle APEXのアプリケーション作成の参考になれば幸いです。