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

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

[山田祥寛,@IT]

 「Googleの検索機能を利用する」でも紹介したように、Google APIを利用することでGoogleの検索データベースに自サイトから直接にアクセスすることが可能になります。別稿ではごく基本的なGoogleの利用方法についてのみ紹介しましたが、Googleには単なるキーワード検索にとどまらず、関連サイト検索やキャッシュ活用など高度な機能が備わっており、これらを利用することでさらに目的のサイトを探しやすくなります。本稿では、「Googleの検索機能を利用する」のサンプル(google.jsp)をベースに、これらの機能を追加してみることにしましょう。

(1)関連サイト/バックワードリンク

 Googleでは「related:<URL>」の形式で指定されたURLに関連するサイトを、「link:<URL>」の形式で指定されたURLにリンクしているサイトを、それぞれ検索します。関連サイト/バックワードリンクの実装方法は、取得した検索結果のURLにそれぞれ「related:」「link:」を付加し、自分自身へのリンクを張るだけです。

google_plus.jsp
<dd><%=objGsre[i].getSnippet()%>
  <br /><font size="-1">
  <a href="google_plus.jsp?q=related:<%=objGsre[i].getURL()%>">
    関連サイト</a> /
  <a href="google_plus.jsp?q=link:<%=objGsre[i].getURL()%>">
     バックワードリンク</a>

</dd>


(2)代替の検索キーワードを提案

 Googleでは、現在の検索キーワードで適切なサイトが見つからなかった場合に、酷似したキーワードを自動生成し、提案するという機能を持っています。実装は簡単、GoogleSearch#doSpellingSuggestionメソッドに元の検索キーワードを渡すだけです。ここでは、検索結果が0件の場合のみ代替キーワードの表示を行うようにしています。

google_plus.jsp
<h3> 検索の結果、 <%=objGsr.getEstimatedTotalResultsCount()%> 件のサイトが抽出されました。検索時間は <%=objGsr.getSearchTime()%> です。 </h3>
  <% if(objGsr.getEstimatedTotalResultsCount()==0){ %>
  (目的のサイトが見つからない場合は、キーワード「 <%=objGs.doSpellingSuggestion(request.getParameter("q"))%> 」で検索してみてください。) <% } %>
 


(3)キャッシュページを活用

 Googleでは個別のページを自身のデータベース内にキャッシュとして保存しています。キャッシュの内容は最新の情報でない可能性こそありますが、表示スピードが(一般的に)速い、元のサイトが破棄されて(または、一時的にダウンして)いても参照することができる、などのメリットがあります。

google_plus.jsp
<a href="google_plus.jsp?q=link:<%=objGsre[i].getURL()%>">
バックワードリンク</a> /
キャッシュサイズ
  <a href="google_cache.jsp?url=<%=objGsre[i].getURL()%>">
  <%=objGsre[i].getCachedSize()%></a>

</dd>


google_cache.jsp
<%@ page contentType="text/html;charset=Windows-31J"
import="com.google.soap.search.*" %>
<%
GoogleSearch objGs=new GoogleSearch();
objGs.setKey("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
out.print(new String(objGs.doGetCachedPage(request.getParameter("url"))));
%>


 キャッシュの内容を表示するのは、GoogleSearch#doGetCachedPageメソッドの役割です。引数として対象ページのURLを引き渡すだけで当該ページのデータをバイト配列として返しますので、アプリケーション側では、これを文字列化して出力するだけです。

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

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

Focus

- PR -

RSSについて

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

メールマガジン登録

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