■グーグルの特殊構文を利用する (Google2.aspx)

 

グーグルは、表4に示すような特殊構文をサポートしています。ここでは、これらの特殊構文を使用してWebページを検索するサンプルを作成します。

 

4:グーグルがサポートしている特殊構文(一部のみ掲載)

特殊構文

説明

site:

構文で指定したサイト/ドメインを検索します。

 

site:www.google.comsite:google.comsite:com

related:

構文で指定されたページと関連するページを検索します。

 

related:google.comrelated:www.yahoo.com

link:

構文で指定されたURLにリンクしているページを検索します。たとえば、「link:www.google.com」を指定するとグーグルにリンクしているページのリストが返されます。

daterange:

グーグルのデータベースに登録された日付(期間)を指定してページを検索します。ここで指定する日付は、通常私達が使用しているグレゴリオ暦ではなく、ユリウス暦の通算日付を指定します。たとえば、「2005/11/23」のユリウス通日は「2453697.73845」になります。daterange:に指定するときは、小数点以下を四捨五入または切り捨てして整数部のみ指定します。書式は「開始日」-「終了日」のように期間を指定します。

 

daterange: 2453697-2453697daterange: 2453697-2453698

 

filetype:

ファイルを検索するときに使用します。この構文には、検索対象となるファイルの拡張子を指定します。Powerpoint(ppt)Excel(xls)Word(doc)Acrobat PDF(pdf)

 

filetye:pptfiletype:xlsfiletype:docfiletype:pdf

 

新規Webページを作成したら、ツールボックスからDataListをドラッグ&ドロップします。デザイナにDataListが作成されたら、プロパティウィンドウからVisibleプロパティに「False」を設定します。さらに、RepeatDirectionプロパティに「Horizontal」、RepatColumnsプロパティに「2」を設定して、水平方向に2列で表示されるようにします。

 

HTMLビューに切り替えたら、次のような<ItemTemplate>…</ItemTemplate>を追加します。

 

<asp:datalist id="dlstGoogle" runat="server"

  Visible="False" RepeatDirection="Horizontal" RepeatColumns="2" ・・・>

  <ItemTemplate>

    <%# Container.DataItem("AutoID") %>.

    <a href='<%# Container.DataItem("URL") %>' target="_blank">

      <%# Container.DataItem("Title") %>

    </a>

    <div id="divSnippet"><%# Container.DataItem("Snippet") %></div>

    <div id="divUrl" class="url"><%# Container.DataItem("URL") %></div>

    <br>

  </ItemTemplate>

</asp:datalist>

 

4x2の表(table)を作成したら、図4のようなコントロールを作成します。表の1行目には、「標準検索」で使用するコントロール(TextBoxButtonCheckBox)を配置します。

 

表2行目の左側のセルでは、1個のsite:構文を利用して特定のサイトを検索します。右側のセルでは、複数のsite:構文を利用して複数のサイトを検索します。たとえば、カテゴリーから「ニュース」を選択したときは、「朝日新聞」、「読売新聞」、「毎日新聞」、「日経新聞」のサイトを検索します。

 

<asp:dropdownlist id="dropCategory3" Runat="server">

  <asp:ListItem Value="(site:www.asahi.com | site:www.yomiuri.co.jp | site:www.nikkei.co.jp | site:www.mainichi.co.jp)">ニュース</asp:ListItem>

  ・・・

</asp:dropdownlist>

 

表3行目の左側のセルでは、filetype:構文を利用してWordPowerpointExcelAcrobat PDFのファイルを検索します。

 

<asp:radiobuttonlist id="radlFileType3" Runat="server"

  RepeatDirection="Horizontal" RepeatColumns="4" >

  <asp:ListItem Value="doc">Word</asp:ListItem>

  <asp:ListItem Value="ppt">Powerpoint</asp:ListItem>

  <asp:ListItem Value="xls">Excel</asp:ListItem>

  <asp:ListItem Value="pdf">Acrobat PDF</asp:ListItem>

</asp:radiobuttonlist>

 

右側のセルでは、daterange:構文を利用して日付を指定して検索します。日付はドロップダウンリストから「今日、昨日、1週間前、1ヶ月前、2ヶ月前、3ヶ月前、6ヶ月前、1年前」のいずれかを選択します。

 

<asp:dropdownlist id="dropDate" Runat="server">

  <asp:ListItem Value="0">今日</asp:ListItem>

  <asp:ListItem Value="1">昨日</asp:ListItem>

  <asp:ListItem Value="7">1週間前</asp:ListItem>

  <asp:ListItem Value="30">1ヶ月前</asp:ListItem>

  <asp:ListItem Value="60">2ヶ月前</asp:ListItem>

  <asp:ListItem Value="90">3ヶ月前</asp:ListItem>

  <asp:ListItem Value="120">6ヶ月前</asp:ListItem>

  <asp:ListItem Value="365">1年前</asp:ListItem>

</asp:dropdownlist>

 

表の4行目では、related:link:構文を利用して関連サイトとリンクしているサイトを検索します。

 

図4: 表にグーグルの特殊構文を利用した検索機能を追加

 

デザイナの右クリックから[コードの表示]を選択します。コードビューが表示されたら、[検索]ボタンのクリック時のイベントハンドラからGoogleSearchメソッドを実行して戻り値をDataListにバインドするコードを追加します。たとえば、日付指定で検索するときは、クリック時のイベントにリスト4のコードを追加します。日付をグレゴリオ暦からユリウス通日に変換するにはg2jメソッドを実行します。

 

リスト4:日付指定で検索するボタンのクリック時の処理 (Google2.apsx.vb)

Private Sub btnSearch5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch5.Click

  Dim intDays As Integer = Int32.Parse(dropDate.SelectedValue)

  Dim intBaseDate As Integer = g2j(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second)

  Dim strDateRange1 As String = (intBaseDate - intDays).ToString()

  Dim strDateRange2 As String = intBaseDate.ToString()

  Dim strSearchTerm As String = txtSearchTerm5.Text & " daterange:" & strDateRange1 & "-" & strDateRange2

  txtSearchTerm1.Text = strSearchTerm

  dlstGoogle.DataSource = GoogleServices.Google.GoogleSearch(strSearchTerm)

  dlstGoogle.DataBind()

  dlstGoogle.Visible = True

End Sub

 

VS.NET のツールバーから[開始]ボタンをクリックします。ブラウザが起動されてWebページが表示されたら、

「日付指定検索」のテキストボックスにキーワード「ajax」を入力して、ドロップダウンリストから[1週間前]を選択したら、[検索]ボタンをクリックします。DataListに検索結果が2列で表示されます(6)

 

検索条件を手動でカスタマイズしたいときは、「標準検索」のテキストボックスに日付指定の検索条件「ajax daterange:2453691-2453698」が表示されていますので編集してから[検索]ボタンをクリックします(7)。たとえば、マイクロソフトのサイトを日付指定で検索するには、テキストボックスの検索条件を「ajax daterange:2453691-2453698 site:microsoft.com」のように編集して、[検索]ボタンをクリックします。

 

図5:日付指定でキーワード「ajax」を検索

 

 

図6:1週間前にグーグルのデータベースに登録されたページが表示された

 

 

図7:日付指定で検索した検索条件は「標準検索」に表示されるので手動でカスタマイズできる