Javaプログラミング編

Googleの検索機能を利用する

山田祥寛
2004/8/24

 Google(http://www.google.co.jp/)――いわずと知れたサーチエンジンの代表ともいうべきサイトです。皆さんの中にも、パーソナル/ビジネス用途を問わず、インターネット上から情報を得るために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 ( http://www.google.com/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 クラスを取得してください。

「Java TIPS」



Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間