Guest User

Untitled

a guest
May 22nd, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.74 KB | None | 0 0
  1. private static void RunSearch()
  2. {
  3. var hostWeb = "my site";
  4. using (ClientContext ctx = new ClientContext(new Uri(hostWeb)))
  5. {
  6. DataTable resultDataTable = new DataTable();
  7. DataColumn titleCol = new DataColumn("Title");
  8. DataColumn pathCol = new DataColumn("Path");
  9. resultDataTable.Columns.Add(titleCol);
  10. resultDataTable.Columns.Add(pathCol);
  11.  
  12. int currentRowIindex = 0;
  13. var resultTable = GetSearchResults(0, ctx, "allow");
  14.  
  15. if (null != resultTable && resultTable.TotalRowsIncludingDuplicates > 0)
  16. {
  17. while(resultTable.TotalRowsIncludingDuplicates > resultDataTable.Rows.Count)
  18. {
  19. foreach(var resultRow in resultTable.ResultRows)
  20. {
  21. DataRow row = resultDataTable.NewRow();
  22. row["Title"] = resultRow["Title"];
  23. row["Path"] = resultRow["Path"];
  24. resultDataTable.Rows.Add(row);
  25. }
  26. currentRowIindex = resultDataTable.Rows.Count;
  27. resultTable = null;
  28. resultTable = GetSearchResults(currentRowIindex, ctx, "allow");
  29. if(null != resultTable&&resultTable.TotalRowsIncludingDuplicates > 0)
  30. {
  31. if (resultTable.RowCount <= 0)
  32. {
  33. break;
  34.  
  35. }
  36. else
  37. break;
  38. }
  39.  
  40. }
  41. Console.WriteLine("Total Results: {0}", resultDataTable.Rows.Count);
  42. Console.ReadLine();
  43. }
  44. }
  45. }
  46.  
  47. private static ResultTable GetSearchResults(int startIndex, ClientContext clientContext, string searchValue)
  48. {
  49. ClientResult<ResultTableCollection> results = null;
  50. try
  51. {
  52. KeywordQuery keywordQuery = new KeywordQuery(clientContext);
  53. SearchExecutor searchExecutor = new SearchExecutor(clientContext);
  54. keywordQuery.StartRow = startIndex;
  55. keywordQuery.QueryText = searchValue;
  56. keywordQuery.RowLimit = 500;
  57. keywordQuery.RowsPerPage = 500;
  58. keywordQuery.TrimDuplicates = true;
  59. keywordQuery.SortList.Add("Rank", SortDirection.Descending);
  60. keywordQuery.Timeout = 10000; //10 minutes
  61. results = searchExecutor.ExecuteQuery(keywordQuery);
  62. clientContext.ExecuteQuery();
  63. return results.Value.FirstOrDefault(v => v.TableType.Equals(KnownTableTypes.RelevantResults));
  64. }
  65. catch (Exception)
  66. {
  67. throw;
  68. }
  69. }
Add Comment
Please, Sign In to add comment