代码改变世界

使用SharePoint Server 2007搜索对象模型编程创建搜索查询

2008-03-16 15:15  努力学习的小熊  阅读(2257)  评论(0编辑  收藏  举报

 

MOSS Visual How To

使用SharePoint Server 2007搜索对象模型编程创建搜索查询

摘要:学习如何使用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 ProviderSSP)上下文。可以使用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语法来执行查询搜所。

两个的执行过程一样。

 

原文地址:http://msdn2.microsoft.com/en-us/library/bb626127.aspx

本文旨在帮助大家学习,帮助英文不好的MOSS爱好者,分享我的学习经验。如有错误请大家指出,共同进步:)