如何在WSS中利用KeywordQuery创建搜索查询

WSS(Windows SharePoint Services)
KeywordQuery可执行关键字语法搜索查询,可以将搜索条件直接传递给搜索组件而无需通过搜索条件来分析以生成查询。


1.添加两个引用
Microsoft.Sharepoint
Microsoft.Sharepoint.Search

如果你使用MOSS操作可以引入Microsoft.Office.Server.Search


2.代码实现
类的构造函数具有两次重载;当实例化类时,必须指定网站集(作为 SPSite 类的实例)或者网站名称

DataTable resultsDataTable  =   new  DataTable(); 
using  (SPSite site  =   new  SPSite( " http://server/ " )) 

KeywordQuery query 
=   new  KeywordQuery(site); 
query.QueryText 
=  queryText; 
query.ResultTypes 
=  ResultType.RelevantResults; 
ResultTableCollection resultTables 
=  query.Execute(); 
if  (resultTables.Count  >   0

ResultTable relevantResults 
=  resultTables[ResultType.RelevantResults]; 
resultsDataTable.Load(relevantResults, LoadOption.OverwriteChanges); 


return  resultsDataTable; 

 

虽然在WSS中的返回的Microsoft.SharePoint.Search.Query.ResultType只能是RelevantResults,但是在代码中你还是必须要指明。否则不会返回任何ResultTable。

Microsoft.Office.Server.Search.Query.RelevantResults可以用四种返回结果。

query.ResultTypes  =  ResultType.RelevantResults; 

 


3.获取特定属性字段
默认返回以下属性字段:
Work ID
Rank
Title
Author
Size
Path
Description
Write
SiteName
CollapsingStatus
HitHighlightedSummary
HitHighlightedProperties
ContentClass
IsDocument
PictureThumbnailURL

如果你想要返回确定的属性字段,设置query.SelectProperties,下面的实例只返回Title和Size

query.SelectProperties.Add( " title " ); 
query.SelectProperties.Add(
" size " ); 

 

 

4.设置设置返回结果分页

int  pageSize  =   3
int  page  =   0


query.StartRow 
=  page  *  pageSize; 
query.RowLimit 
=  pageSize; 

 

5.设置返回结果排序

query.SortList.Add( " Rank " , SortDirection.Ascending); 
query.SortList.Add(
" WorkId " , SortDirection.Descending); 

 

 

你可能感兴趣的:(query)