連載
» 2004年09月14日 10時00分 UPDATE

JavaTips 〜JSP/サーブレット編:Googleの検索機能を利用する

[山田祥寛,@IT]

 Googleは、いわずと知れたサーチエンジンの代表ともいうべきサイトです。皆さんの中にも、パーソナル/ビジネス用途を問わず、インターネット上から情報を得るためにGoogleの恩恵にあずかっているという方は多いのではないでしょうか。

 このGoogleが抱える膨大なサイト情報を自分自身のアプリケーションから自由に利用できたら、どんなに便利でしょう。本稿では、Googleが無償で提供するGoogle APIを介して、Googleの検索データベースに直接にアクセスする方法を紹介します。Google APIを利用することで、Googleのデータベースをあたかも自前のものであるかのようにアクセスすることができますので、取得したデータを加工したり、検索結果をより自由な形にレイアウトしたうえで見せることも可能になるのです。

 それでは早速、Google API活用の具体的なサンプルを眺めてみることにしましょう。

操作手順

(1) Google API をインストールする

 Google API を利用するに当たっては、 Google Web APIs devaloper's Kit とライセンスキーを、 Google Web APIsから取得する必要があります。ダウンロードファイル googleapi.zip を入手したら、解凍したフォルダ直下にある googleapi.jar をアプリケーションルート配下の「/WEB-INF/lib」フォルダにコピーしてください。

 ライセンスキーは、同Google Web APIsのページからユーザー登録を行うだけで取得することができます。登録したE-Mailアドレスに対して、ライセンスキー取得のためのURLが送信されますので、指定されたページにアクセスするだけで終了です。

(2) JSPページからGoogle APIを利用する

 それでは、JSPページからGoogle API にアクセスして、インターネット上のサイトを検索してみることにしましょう。もちろん、実際のアプリケーションではコード部分はサーブレットクラス、JavaBeansなどに記述するべきですが、本稿ではスペースの都合上、JSPページ内にすべて記述してしまうことにします。

google.jsp
<%@ page contentType="text/html;charset=Windows-31J"
     import="com.google.soap.search.*" %>
<% request.setCharacterEncoding("Windows-31J"); %>
<html>
<head>
<title>Google検索</title>
</head>
<body>
<form method="POST" action="google.jsp">
検索キーワード:
<input type="text" name="q" size="30" />
<input type="submit" value="検索" />
</form>
<%
 // 検索キーワードが入力された場合のみ、検索処理を実行
if(request.getParameter("q")!=null && !request.getParameter("q").equals("")){
 GoogleSearch objGs=new GoogleSearch();
 objGs.setQueryString(request.getParameter("q")); // 検索キーワード
 objGs.setLanguageRestricts("lang_ja"); // 対象言語
 objGs.setMaxResults(10); // 最大出力件数
 objGs.setStartResult(1); // 出力開始インデックス
 objGs.setSafeSearch(true); // 有害なページをブロックするか
 objGs.setKey("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); // ライセンスキー
 // 検索を実行
 GoogleSearchResult objGsr=objGs.doSearch();
 // 検索の結果、抽出された詳細情報を取得
 GoogleSearchResultElement[] objGsre=objGsr.getResultElements();
%>
 <hr />
 <h2>検索キーワード:<%=objGsr.getSearchQuery()%></h2>
 <h3>検索の結果、<%=objGsr.getEstimatedTotalResultsCount()%>件のサイトが抽出されました。検索時間は<%=objGsr.getSearchTime()%>です。</h3>
 <dl>
  <%--検索結果詳細からタイトル、URL、サイトサマリを取得--%>
  <% for(int i=0;i<objGsre.length;i++){ %>
   <dt><a href="<%=objGsre[i].getURL()%>">
    <%=objGsre[i].getTitle()%></a></dt>
   <dd><%=objGsre[i].getSnippet()%></dd>
  <% } %>
 </dl>
<%
}
%>
</body>
</html>


 GoogleSearchクラスは、Google検索を行うための諸条件を管理するためのクラスで、このクラスに対して必要なパラメータ値を渡すことで、Googleに対して検索問い合わせを行うことができます(設定可能なパラメータ値は、ダウンロードファイルに添付のAPIリファレンスを参照してください)。setKeyメソッドには、手順(1)で取得したライセンスキーを各自設定する必要があります。

 一連のsetterメソッドを設定した後は、 GoogleSearch#doSearchメソッドで検索処理を実行します。doSearchメソッドは、戻り値として検索結果の概要(結果件数や検索時間)を表す GoogleSearchResultクラスを返します。結果の詳細情報を取得したい場合には、 GoogleSearchResult#getResultElements メソッドでGoogleSearchResultElementクラスを取得してください。

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

Focus

- PR -

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。