摘要:学习如何使用Microsoft Office SharePoint Server 2007 对象模型以编程的方式创建搜索查询。
适用于:Microsoft Office SharePoint Server 2007
Patrick Tisseghem, U2U
July 2007
简介
有两种方式可以以编程的方式进行搜索查询,一种是直接使用Microsoft Office SharePoint上下文中的对象模型,另一种是通过使用搜索的Web Service进行远程调用。Office SharePoint Server 2007对象模型提供了一套新的类,你可以使用它们编程执行一个搜索查询。
代码
以下代码需要添加Microsoft.Office.Server.Search.dll组件。示例代码中使用的主要命名空间是Microsoft.Office.Server.Search.Query。
构建一个关键字查询字符串
使用关键字语法构建一个查询字符串是比较简单的。在构建查询字符串的时候,在想要从查询结果中排除的关键字加上连字符(-)前缀;在向要包含在查询结果中的关键字加上加号(+)前缀。你也可以添加属性标准。下面的查询当执行时返回所有包含”Business”关键字并且不是由”Brian”撰写的文档。
Business -isDocument:0 -author:brianc |
构建一个全文检索字符串
使用SQL语言扩展方式的查询字符串允许更强大的搜索请求,支持全文检索,控制返回的字段,而且在条件中可以适用搜索范围和属性。下面是前面查询例子以全文查询字符串的形式来表示。
SELECT Title, Rank, Write, Url FROM SCOPE() WHERE 'Scope'= 'Marketing Documents' AND FREETEXT('business') AND isDocument 1 0 AND author IS NOT 'Brian'} |
执行一个关键字查询字符串
执行关键字语法的查询字符串时,需要创建一个KeywordQuery类的对象实例,然后将它提供给服务器场中的Shared Services Provider(SSP)上下文。可以使用SPSite对象的一个实例来做这件事情。然后,然后给QueryText属性的查询字符串的执行和指派设置一个或多个属性。Execute方法返回一个包含查询结果的ResultTableCollection对象。使用ResultType枚举,可以设置需要返回的结果类型,然后将它们绑定到基于Windows或者ASP.NET的控件上。
SPSite site = new SPSite("http://moss.litwareinc.com"); KeywordQuery kwq = new KeywordQuery(site); kwq.QueryText = textBoxKeyword.Text; kwq.ResultTypes = ResultType.RelevantResults; ResultTableCollection results = kwq.Execute(); ResultTable resultTable = results[ResultType.RelevantResults]; |
执行一个全文检索字符串
使用全文检索方式的查询字符串,它的执行过程与前面的代码一样。但是,现在我们使用的是FullTextSqlQuery类。下面的代码示例显示了另一种提供给SSP上下文构造器的方法。这次,需要添加Microsoft.Office.Server.ServerContext引用来实现这个功能。
ServerContext context = ServerContext.GetContext("SharedServices1"); FullTextSqlQuery qry = new FullTextSqlQuery(context); qry.ResultTypes = ResultType.RelevantResults; qry.EnableStemming = true; qry.TrimDuplicates = true; qry.QueryText = query; ResultTableCollection results = qry.Execute(); ResultTable resultTable = results[ResultType.RelevantResults]; |
阅读
Microsoft Office SharePoint Portal Server 2003包含一个名为QueryProvider的类,可以编程执行搜索查询。这个类仍然可以使用,但是现在是否决的。Office SharePoint Server 2007提供了两个新的类;均继承自Query基类。
l KeywordQuery构建一个关键字语法来执行查询搜索。
l FullTextSqlQuery构建全文SQL语法来执行查询搜所。
两个的执行过程一样。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639172/viewspace-374803/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12639172/viewspace-374803/