Quantcast
Channel: SharePoint 2013 - Development and Programming forum
Viewing all articles
Browse latest Browse all 7589

Search Results are varying

$
0
0

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


Viewing all articles
Browse latest Browse all 7589

Trending Articles