Hi,
Working on migration of sharepoint 2010 to sharepoint 2013
In Sharepoint 2013 central admin,through query builder we are passing one query and we are getting 4 results.
But we migrated a source code from sharepoint 2010 to sharepoint 2013 where we are getting only one result.
Earlier code in sharepoint 2010 is as below
public static DataTable KeywordSearch(List<string> selectProperties,string scope,
string searchServiceAppName,string query)
{
SearchQueryAndSiteSettingsServiceProxy settingsProxy = SPFarm.Local.ServiceProxies.GetValue<SearchQueryAndSiteSettingsServiceProxy>();
SearchServiceApplicationProxy searchProxy =
settingsProxy.ApplicationProxies.GetValue<SearchServiceApplicationProxy>(searchServiceAppName);
KeywordQuery keywordQuery = new KeywordQuery(searchProxy);
keywordQuery.QueryText = query;
keywordQuery.ResultsProvider = Microsoft.Office.Server.Search.Query.SearchProvider.Default;
foreach (string property in selectProperties)
{
keywordQuery.SelectProperties.Add(property);
}
keywordQuery.ResultTypes = ResultType.RelevantResults;
keywordQuery.HiddenConstraints = "scope:" + "\"" + scope + "\"";
ResultTableCollection resultsTableCollection = keywordQuery.Execute();
ResultTable searchResultsTable = resultsTableCollection[ResultType.RelevantResults];
DataTable resultsDataTable = new DataTable();
resultsDataTable.TableName = "Results";
resultsDataTable.Load(searchResultsTable, LoadOption.OverwriteChanges);
var searchResultsTables = resultsTableCollection.Filter("TableType", KnownTableTypes.RelevantResults);
DataTable resultsDataTable = new DataTable();
if (searchResultsTables != null && searchResultsTables.Count() > 0)
resultsDataTable = searchResultsTables.FirstOrDefault().Table;
return resultsDataTable;
}
Modified to Sharepoint 2013 as below
public static DataTable KeywordSearch(List<string> selectProperties,string scope,
string searchServiceAppName,string query)
{
SearchQueryAndSiteSettingsServiceProxy settingsProxy = SPFarm.Local.ServiceProxies.GetValue<SearchQueryAndSiteSettingsServiceProxy>();
SearchServiceApplicationProxy searchProxy =
settingsProxy.ApplicationProxies.GetValue<SearchServiceApplicationProxy>(searchServiceAppName);
KeywordQuery keywordQuery = new KeywordQuery(searchProxy);
keywordQuery.QueryText = query;
keywordQuery.ResultsProvider = Microsoft.Office.Server.Search.Query.SearchProvider.Default;
foreach (string property in selectProperties)
{
keywordQuery.SelectProperties.Add(property);
}
SearchObjectOwner owner = new SearchObjectOwner(SearchObjectLevel.Ssa);
SourceRecord source = searchProxy.GetResultSourceByName(scope, owner);
keywordQuery.SourceId = source.Id;
SearchExecutor executor = new SearchExecutor();
ResultTableCollection resultsTableCollection= executor.ExecuteQuery(keywordQuery);
DataTable resultsDataTable = new DataTable();
if (searchResultsTables != null && searchResultsTables.Count() > 0)
resultsDataTable = searchResultsTables.FirstOrDefault().Table;
return resultsDataTable;
}
Please let me know if missing anything to get same results as in Sharepoint 2013 Query Builder.
Regards,
Sudheer
Thanks & Regards, Sudheer