public string GetSearchResult(string messageInput) { string k = GetSearchKeyWord(messageInput); string ret = string.Empty; using (SPMonitoredScope scope = new SPMonitoredScope("MyCustomMessageHandler.GetSearchResult")) { //KeywordQuery keywordquery = new KeywordQuery(SPContext.Current.Site); //keywordquery.ResultTypes = ResultType.RelevantResults; //keywordquery.QueryText = string.Concat("ContentSource=", contentSourceName, " ", AppearInWeChat, "=True"); //keywordquery.SelectProperties.Add(WeChatResult); //keywordquery.TrimDuplicates = false; //keywordquery.RowsPerPage = 0; //keywordquery.RowLimit = 10; //keywordquery.Timeout = 5000; //SearchExecutor searchexecutor = new SearchExecutor(); //2013 foundation 里面的SearchExecutor这里没有 //ResultTableCollection resulttablecollection = searchexecutor.ExecuteQuery(keywordquery); //ResultTable resulttable = resulttablecollection.Filter("TableType", KnownTableTypes.RelevantResults).FirstOrDefault(); //https://docs.microsoft.com/en-us/previous-versions/office/developer/sharepoint-2010/ms493601(v=office.14) SearchServiceApplicationProxy proxy = (SearchServiceApplicationProxy)SearchServiceApplicationProxy.GetProxy(SPServiceContext.GetContext(SPContext.Current.Site)); KeywordQuery query = new KeywordQuery(proxy); query.ResultsProvider = Microsoft.Office.Server.Search.Query.SearchProvider.Default; query.QueryText = string.Concat("ContentSource=", contentSourceName, " ", AppearInWeChat, "=True"); query.ResultTypes |= ResultType.RelevantResults; ResultTableCollection searchResults = query.Execute(); if (searchResults.Exists(ResultType.RelevantResults)) { ResultTable searchResult = searchResults[ResultType.RelevantResults]; DataTable result = new DataTable(); result.TableName = "Result"; result.Load(searchResult, LoadOption.OverwriteChanges); StringBuilder sb = new StringBuilder(); foreach (DataRow r in result.Rows) { sb.Append(r[WeChatResult]); sb.Append(System.Environment.NewLine); } ret = sb.ToString(); } } return(ret); }
void searchButton_Click(object sender, EventArgs e) { //Only search if there are search terms if (searchTermsTextbox.Text != string.Empty) { //First, we must connect to the service application proxy SearchServiceApplicationProxy proxy = (SearchServiceApplicationProxy)SearchServiceApplicationProxy.GetProxy(SPServiceContext.GetContext(SPContext.Current.Site)); //Create and configure a Keyword Query object KeywordQuery query = new KeywordQuery(proxy); query.ResultsProvider = SearchProvider.Default; query.QueryText = searchTermsTextbox.Text; //Relevant Results are the main search results query.ResultTypes = ResultType.RelevantResults; //Now we can execute the query ResultTableCollection searchResults = query.Execute(); if (searchResults.Exists(ResultType.RelevantResults)) { //There are relevant results. We need them in a Data Table //so we can bind them to the Data Grid for display ResultTable resultTable = searchResults[ResultType.RelevantResults]; //Tell the user how many results we got resultsLabel.Text = String.Format("There are {0} results", resultTable.TotalRows.ToString()); //Set up and load the data table DataTable resultDataTable = new DataTable(); resultDataTable.TableName = "Result"; resultDataTable.Load(resultTable, LoadOption.OverwriteChanges); //Bind the datatable to the Data Grid resultsGrid.DataSource = resultDataTable; resultsGrid.DataBind(); } else { //Search executed but found nothing resultsLabel.Text = "There were no relevant results. Try other search terms"; } } else { //No search terms in the textbox resultsLabel.Text = "Please enter at least one search term"; } }
public bool Exists(string resultType) { ResultType rt; return(resultType.TryParseEnum(true, out rt) && m_resultTableCollection.Exists(rt)); }