【Bear-Study-Hard】使用SharePoint Server 2007搜尋物件模型程式設計

iDotNetSpace發表於2008-07-09

摘要:學習如何使用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語法來執行查詢搜所。

兩個的執行過程一樣。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-374803/,如需轉載,請註明出處,否則將追究法律責任。

相關文章