次の方法で共有


[方法] クライアント アプリケーションからエンタープライズ検索にキーワード クエリを送信する

Microsoft Office SharePoint Server 2007 でのエンタープライズ検索 には、クライアント アプリケーションに検索機能を公開する Query Web サービスが含まれています。

注意

このコンテキストでは、クライアント アプリケーションとは、Query Web サービスを呼び出すアプリケーションを表します。これには、Microsoft ASP.NET Web アプリケーション、Windows Forms アプリケーションなどが含まれます。

Query Web サービスの QueryEx Web メソッドは、検索サービスにクエリを送信し、System.Data.DataSet オブジェクトに結果を返します。次の手順は、エンタープライズ検索Query Web サービスを使用し、QueryEx Web メソッドを使用して Windows ベースのクライアント アプリケーションに検索結果を返す方法を示しています。また、次のタスクが含まれています。

  • クライアント アプリケーションをセットアップする

  • クライアント アプリケーション用のフォームを変更する

  • コードを記述する

この手順を実行するには、以下の点を確認してください。

  • Microsoft Visual Studio 2005 が開発コンピュータにインストールされている。

  • エンタープライズ検索 を使用するように構成されている SharePoint サイトにアクセスする権限を持っている。

Windows ベースのクライアント アプリケーションをセットアップするには

  1. Visual Studio 2005 の [ファイル] メニューで [新規作成] をポイントし、[プロジェクト] をクリックします。

  2. [プロジェクトの種類] で、[C#] の [Windows] を選択します。

  3. [テンプレート] の [Windows アプリケーション] を選択します。[名前] フィールドに「QueryExClientSample」と入力し、[OK] をクリックします。

  4. Web サービスのプロキシ クラスを作成します。これは次のいずれかの方法で行うことができます。

クライアント アプリケーション用の既定のフォームを変更するには

  1. ソリューション エクスプローラで、フォーム (既定のフォームを使用している場合は [フォーム1]) をダブルクリックします。

  2. [ツールボックス] で [ボタン] をクリックし、フォームにドラッグします。[プロパティ] で、[(Name)] を cmdQuery に変更します。

  3. [ツールボックス] で [テキスト ボックス] をクリックし、フォームにドラッグします。[プロパティ] で、[(Name)] を txtQuery に変更し、[Multiline] を [True] に設定します。

  4. [ツールボックス] で [DataGridView] をクリックし、フォームにドラッグします。[プロパティ] で、[(Name)] を grdResults に変更します。

  5. [ツールボックス] で [ラベル] をクリックし、フォームにドラッグします。[プロパティ] で、[(Name)] を lblResults に変更し、[Text プロパティの内容を削除します。

クライアント アプリケーション用のコードを記述するには

  1. cmdQuery をダブルクリックして、Click イベントのイベント ハンドラを追加します。イベント ハンドラ内にカーソルが置かれた状態で、コード エディタが開きます。

  2. 以下の名前空間ディレクティブを、clsSearchQuery.cs のコードの上部付近に追加します。

    using System.Drawing;
    using System.Data;
    using System.Xml;
    using System.Xml.Serialization;
    using Microsoft.SharePoint.WebPartPages;
    using Microsoft.Office.Server;
    using Microsoft.Office.Server.Search.Query;
    
  3. 以下のコード行で、WebControl を WebPart に置き換えます。

    public class clsSearchQuery : WebControl
    
  4. 以下のコード行を clsSearchQuery のクラス宣言の上に追加します。

    [XmlRoot(Namespace = "CustomSearchWebPart")]
    

//The string containing the keyword to use in the search
string keywordString = "Microsoft";

//The XML string containing the query request information 
//for the Web service
string qXMLString = "<QueryPacket xmlns='urn:Microsoft.Search.Query'>"+
"<Query><SupportedFormats><Format revision='1'>"+
"urn:Microsoft.Search.Response.Document:Document</Format>"+
"</SupportedFormats><Context><QueryText language='en-US' type='STRING'>"+
keywordString + "</QueryText></Context></Query></QueryPacket>";

QueryWebServiceProxy.QueryService queryService = new QueryWebServiceProxy.QueryService();
queryService.Credentials = System.Net.CredentialCache.DefaultCredentials;
System.Data.DataSet queryResults = queryService.QueryEx(qXMLString);
resultsGridView.DataSource = queryResults .Tables[0];

See Also

タスク

[方法] Visual Studio 2005 でエンタープライズ検索クエリ Web サービスの Web サービス プロキシ クラスを作成する

参照

エンタープライズ検索のキーワード構文の参照

概念

エンタープライズ検索のクエリ Web サービスの概要

その他のリソース

エンタープライズ検索用の Microsoft.Search スキーマ リファレンス