如何:从客户端应用程序向企业级搜索提交关键字查询

Microsoft Office SharePoint Server 2007 企业级搜索包括Query Web 服务,后者可向客户端应用程序公开搜索功能。

备注

在此上下文中,客户端应用程序 指调用Query Web 服务的应用程序。它可能包括 Microsoft ASP.NET Web 应用程序、Windows 窗体应用程序等。

Query Web 服务的 QueryEx Web 方法可向搜索服务发送查询,并且在 System.Data.DataSet 对象中返回结果。下面的过程通过 QueryEx Web 方法,演示如何使用企业级搜索Query Web 服务将搜索结果返回到基于 Windows 的客户端应用程序,该过程包括以下任务:

  • 安装客户端应用程序

  • 修改客户端应用程序的窗体

  • 编写代码

若要执行此过程,请确保满足以下条件:

  • 您的开发计算机上安装了 Microsoft Visual Studio 2005。

  • 您具有访问配置为使用企业级搜索的 SharePoint 网站的权限。

安装基于 Windows 的客户端应用程序

  1. 在 Visual Studio 2005 中的“文件”菜单上,指向“新建”,然后单击“项目”。

  2. 在“项目类型”的“C#”下,选择“Windows”。

  3. 在“模板”下,选择“Windows 应用程序”。在“名称”字段中,键入“QueryExClientSample”,然后单击“确定”。

  4. 为 Web 服务创建代理类。可以通过以下方法之一执行此操作:

修改客户端应用程序的默认窗体

  1. 在“解决方案资源管理器”中,双击“窗体”(如果您正在使用默认窗体,则为“Form1”)。

  2. 在“工具箱”中,单击“按钮”,然后将其拖动到窗体中。在“属性”中,将“(名称)”更改为“cmdQuery”。

  3. 在“工具箱”中,单击“TextBox”,然后将其拖动到窗体中。在“属性”中,将“(名称)”更改为“txtQuery”,并将“多行”设置为“True”。

  4. 在“工具箱”中,单击“DataGridView”,然后将其拖动到窗体中。在“属性”中,将“(名称)”更改为“grdResults”。

  5. 在“工具箱”中,单击“标签”,然后将其拖动到窗体中。在“属性”中,将“(名称)”更改为“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. 在以下代码行中,使用 WebPart 替换 WebControl。

    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 架构引用