クライアント アプリケーションから SharePoint Search にクエリを実行する
最終更新日: 2010年7月20日
適用対象: SharePoint Server 2010
適用先: Microsoft SharePoint Server 2010 Search および Microsoft FAST Search Server 2010 for SharePoint
Query Web サービスは、Microsoft SharePoint Server 2010 の SharePoint エンタープライズ検索機能をクライアント アプリケーションに公開します。
注意
この文脈では、クライアント アプリケーションとは、Query Web サービスを呼び出すアプリケーションを指します。これには、Microsoft ASP.NET Web アプリケーションあるいは Windows Forms アプリケーションのようなアプリケーションが含まれます。
Query Web サービスの QueryEx Web メソッドは、検索サービスにクエリを送り、DataSet オブジェクトで結果を返します。以下のチュートリアルでは、Query Web サービスを使用して、QueryEx Web メソッドにより、Windows ベースのクライアント アプリケーションに SharePoint Server Search 結果を返す方法について説明します。以下のタスクが含まれます。
クライアント アプリケーションを設定する
クライアント アプリケーションから Query Web サービスを参照する
クライアント アプリケーションのためにフォームを変更する
クライアント アプリケーションのコードを作成する
クライアント アプリケーションをテストする
このチュートリアルを実行するために、以下のことを確認してください。
Microsoft Visual Studio 2010 が開発コンピューターにインストールされていること。
SharePoint Server Search を使用するように設定した SharePoint サイトにアクセスする権限を持っていること。
クライアント アプリケーションを設定するには
Visual Studio 2010 の [ファイル] メニューで、[新規作成] をポイントし、[プロジェクト] をクリックします。
[インストールされているテンプレート] の、[Visual C#] を展開して、[Windows] をクリックします。
[Windows フォーム アプリケーション] を選択します。[名前] フィールドに「QueryExClientSample」と入力し、[OK] をクリックします。
Query Web サービスに Web 参照を追加するには
ソリューション エクスプローラーで、プロジェクトの名前を右クリックして、次に [サービス参照の追加] をクリックします。
[サービス参照の追加] ダイアログ ボックスで、[詳細設定] をクリックします。
[サービス参照設定] ダイアログ ボックスで、[Web 参照の追加] をクリックします。
[サービス参照の追加] ダイアログ ボックスで、[URL] テキスト フィールドに「http://SERVER/_vti_bin/search.asmx」と入力します。ここで SERVER は、SharePoint サイトへの URL となります。次に、[移動] をクリックします。
Web サービスが見つかったとき、QueryService Web サービスのためのページが [Web 参照の追加] ダイアログ ボックスのメイン ウィンドウに表示されます。[Web 参照名] フィールドに「QueryWebServiceProxy」を入力して、次に [参照の追加] をクリックします。
クライアント アプリケーションの既定のフォームを変更するには
ソリューション エクスプローラーで、フォーム (既定のフォームを使用している場合は Form1) をダブルクリックします。
[ツールボックス] で、[コモン コントロール] を展開して、[ボタン] をクリックし、コントロールをフォームにドラッグします。[プロパティ] で、[(名前)] を「queryButton」に変更し、[テキスト] プロパティに「Query」と入力します。
[ツールボックス] で、[テキスト ボックス] をクリックして、コントロールをフォームにドラッグします。[プロパティ] で、[(名前)] を「queryTextBox」に変更して、[Multiline] を [True] に設定します。
[ツールボックス] で、[データ] を展開して、[DataGridView] をクリックし、コントロールをフォームにドラッグします。[プロパティ] で、[(名前)] を「resultsGrid」に変更します。
[ツールボックス] で、[ラベル] をクリックして、コントロールをフォームにドラッグします。[プロパティ] で、[(名前)] を「resultsLabel」に変更して、[テキスト] プロパティの内容を削除します。
クライアント アプリケーションのコードを作成するには
[queryButton] をダブルクリックして、Click イベントのイベント ハンドラーを追加します。queryButton_Click イベント ハンドラー内にカーソルが置かれた状態で、コード エディターが開きます。
queryButton_Click イベントに以下のコードを追加します。
try { // Instantiate the Web service. QueryWebServiceProxy.QueryService queryService = new QueryWebServiceProxy.QueryService(); // Use the credentials of the user running the client application. queryService.Credentials = System.Net.CredentialCache.DefaultCredentials; //Execute the QueryEx method, returning the results to a DataSet System.Data.DataSet queryResults = queryService.QueryEx(GetXMLString()); // Set the DataGridView data source to the first table in the DataSet oject, which contains the relevant results. resultsGrid.DataSource = queryResults.Tables[0]; } catch (Exception ex) { resultsLabel.Text = ex.ToString(); }
QueryEx メソッドに渡される文字列は、GetXMLString 関数で構築されます。GetXMLString 関数を作成するには、Form1 クラスに以下のコードを追加します。
private string GetXMLString() { /* The proceeding six lines of code is actually one line of code. It is separated into four lines here for readability. You will need to remove the line breaks when you copy the code to your project. */ StringBuilder xmlString = new StringBuilder("<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'>"); xmlString.Append(queryTextBox.Text); xmlString.Append("</QueryText></Context></Query></QueryPacket>"); return xmlString.ToString(); }
クライアント アプリケーションをテストするには
クライアント アプリケーションをビルドして実行するには、F5 キーを押します。
テキスト ボックスにキーワード クエリを入力します。キーワード クエリを構築する方法の詳細については、「キーワード クエリ構文のリファレンス」を参照してください。
Query Web サービスにキーワード クエリを提出するには、[クエリ] をクリックします。返された結果は、DataGridView コントロールに表示されます。
関連項目
参照
QueryService