SharePoint Server Search(キーワードQueryクラス)を使用してSharePointリストを検索する方法
-
26-12-2019 - |
質問
フロントエンドから「レポート」と呼ばれるリストを検索することを許可されている要件を有し、author:"John Smith"
やfiletype:docx
などの高度な検索はサポートされています。
これは、 SharePoint Serverの検索API (キーワードクエリ言語)また、すべてのユーザーがリスト内のすべての項目にアクセスできない可能性があるため、リストを照らした特権を持つWebメソッドを使用するためのアプローチで行くことにしました。
これは私の試みです...
public string GetSearchResults(string listname, string searchQuery)
{
SPUser superUser = SPContext.Current.Web.AllUsers[@"SHAREPOINT\SYSTEM"];
using (SPSite site = new SPSite(SPContext.Current.Web.Url, superUser.UserToken))
{
KeywordQuery keywordQuery = new KeywordQuery(site);
keywordQuery.QueryText = searchQuery;
//where should listname be specified?
SearchExecutor searchExecutor = new SearchExecutor();
ResultTableCollection resultTableCollection = searchExecutor.ExecuteQuery(keywordQuery);
var resultTables = resultTableCollection.Filter("TableType", KnownTableTypes.RelevantResults);
ResultTable resultTable = resultTables.FirstOrDefault();
DataTable dataTable = resultTable.Table;
}
//how to parse result to filter only items in given list?
}
.
...しかし私が理解していないのは、特定のリストのみを制限する方法や検索結果の解析にどのように検索クエリに一致するリストの項目を取得するかです。
SharePoint Searchの新機能は、どんなポインタにも役立ちます。
解決
Query Text
でリストパスまたはリストGUIDを付与することができます。keywordQuery.QueryText = "Path:/Sales/Lists/Prospects/ (contentclass:STS_ListItem OR IsDocument:True) -ContentClass=urn:content-class:SPSPeople ";
. 所属していません StackOverflow